当前位置:网站首页>使用tf.image.resize() 和tf.image.resize_with_pad()调整图像大小
使用tf.image.resize() 和tf.image.resize_with_pad()调整图像大小
2022-08-03 22:29:00 【Erosion_ww】
tf.image.resize和tf.image.resize_with_pad使用方法
tf.image.resize()
作用
~~~~ 使用指定的方法调整图像大小。
~~~~ 如果原始纵横比与大小不同,调整大小的图像将失真。 为避免失真,可用tf.image.resize_with_pad()
参数
tf.image.resize(
images, # 形状 [batch, height, width, channels] 的 4-D 张量或形状 [height, width, channels] 的 3-D 张量。
size, # 2 个元素的一维 int32 张量:new_height,new_width。 图像的新尺寸。
method=ResizeMethod.BILINEAR, # 一个 image.ResizeMethod,或等效的字符串。 默认为双线性。
preserve_aspect_ratio=False, # 是否保留纵横比。
# true,图像将被调整为适合大小的大小,同时保留原始图像的纵横比。
# 若尺寸大于图像的当前尺寸,则放大图像。 默认为false。
antialias=False, # 对图像进行下采样时是否使用anti-aliasing filter。
name=None # 此操作的名称(可选)。
)
~~~~ 其中,Image.ResizeMethod()的选项有:
~~~~ • bilinear: 双线性插值。若antialisa为true,则在下采样时成为半径为1的hat/tent filter。
~~~~ • lanczos3: Lanczos kernel with radius 3。高质量的实用过滤器,但可能有一些ringing,尤其是在合成图像上。
~~~~ • lanzos5:Lanczos kernel with radius 5。非常高质量的滤波器,但可能有更强的ringing。
~~~~ • bicubic:三次插值。相当于Catmull-Rom kernel,与lanczos3kernel相比较,质量相当好,速度更快,尤其是在上采样时。
~~~~ • gaussian:Gaussian kernel with radius 3, sigma = 1.5 / 3.0.
~~~~ • nearest:最近邻插值。 与最近邻插值一起使用时,antialias无效。
~~~~ • area:使用区域插值进行抗锯齿重采样。 与区域插值一起使用时,antialias没有效果。
~~~~ •mitchellcubic:Mitchell-Netravali Cubic non-interpolating filter. 对于合成图像(尤其是那些缺乏适当预过滤的图像),ringing比Cubic interpolant of Keys少,不那么锐利。
返回值
~~~~ If images was 4-D, a 4-D float Tensor of shape [batch, new_height, new_width, channels].
~~~~ If images was 3-D, a 3-D float Tensor of shape [new_height, new_width, channels].
例子
import tensorflow as tf # 导入tensorflow
img_path ='C:\\Users\\xxx\\.keras\\datasets\\flower_photos\\roses\\6158504080_b844a9ae05.jpg' # 输入图片路径
img_raw = tf.io.read_file(img_path) # 读取图片内容,返回值时string的tensor
img_tensor = tf.image.decode_image(img_raw) # 对输入的string的tensor进行解码
print(img_tensor.shape) # 输入解码后的图像形状
print(img_tensor.dtype) # 输入解码后的图像表示类型
img_final = tf.image.resize(img_tensor, [192, 192]) # 调整图像大小
print(img_final.shape) # 输入调整后的图像大小
(333, 500, 3)
<dtype: 'uint8'>
(192, 192, 3)
tf.image.resize_with_pad()
作用
~~~~ 调整图像大小并将图像填充到目标宽度和高度。
~~~~ 通过保持纵横比不变而不失真,将图像大小调整为目标宽度和高度。 如果目标尺寸与图像尺寸不匹配,则会调整图像大小,然后用零填充以匹配请求的尺寸。
参数
tf.image.resize_with_pad(
image, # 形状 [batch, height, width, channels] 的 4-D 张量或形状 [height, width, channels] 的 3-D 张量。
target_height, # 目标高度
target_width, # 目标宽度
method=ResizeMethod.BILINEAR, # 用于调整图像大小的方法。 见 image.resize()
antialias=False # 调整大小时是否使用抗锯齿。 参见“image.resize()”。
)
返回值
~~~~ Resized and padded image.
~~~~ If images was 4-D, a 4-D float Tensor of shape [batch, new_height, new_width, channels].
~~~~ If images was 3-D, a 3-D float Tensor of shape [new_height, new_width, channels].
主要参考:
tf.image.resize | TensorFlow Core v2.9.1 (google.cn)
tf.image.resize_with_pad | TensorFlow Core v2.9.1 (google.cn)
边栏推荐
- Codeup brushing notes - simple simulation
- 投资性大于游戏性 NFT游戏到底是不是门好生意
- What is memoization and what is it good for?
- 472. Concatenated Words
- Bytebase数据库 Schema 变更管理工具
- Live Preview | Build Business Intelligence, Quickly Embrace Financial Digital Transformation
- 授人以渔 - 如何自行查询任意 SAP UI5 控件属性的文档和技术实现细节试读版
- Data_web(八)mysql增量同步到mongodb
- Teach a Man How to Fish - How to Query the Properties of Any SAP UI5 Control by Yourself Documentation and Technical Implementation Details Demo
- 重发布实验报告
猜你喜欢
投资性大于游戏性 NFT游戏到底是不是门好生意
中国企业构建边缘计算解决方案的最佳实践
Recognized by International Authorities | Yunzhuang Technology was selected in "RPA Global Market Pattern Report, Q3 2022"
override学习(父类和子类)
pikachu Over permission
noip preliminary round
物联网新零售模式,引领购物新潮流
【MySQL进阶】数据库与表的创建和管理
October 2019 Twice SQL Injection
嵌入式系统:时钟
随机推荐
重发布实验报告
Kubernetes入门到精通-Operator 模式
封装、包、访问权限修饰符、static变量
关于IDO预售系统开发技术讲解丨浅谈IDO预售合约系统开发原理分析
mysql如何将表结构导出到excel
Live Preview | Build Business Intelligence, Quickly Embrace Financial Digital Transformation
为什么我们需要回调
【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像
node连接mysql数据库报错:Client does not support authentication protocol requested by server
483. Smallest Good Base
Golang Chapter 2: Program Structure
On the Qixi Festival of 2022, I will offer 7 exquisite confession codes, and at the same time teach you to quickly change the source code for your own use
【刷题篇】二叉树的右视图
目标检测技术研究现状及发展趋势
什么是memoization,它有什么用?
Canvas App中点击图标生成PDF并保存到Dataverse中
utlis thread pool
一个函数有多少种调用方式?
LabVIEW代码生成错误 61056
Makefile