当前位置:网站首页>使用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)
边栏推荐
- 物联网新零售模式,引领购物新潮流
- Data_web(八)mysql增量同步到mongodb
- 藏宝计划TreasureProject(TPC)系统模式开发技术原理
- 2022的七夕,奉上7个精美的表白代码,同时教大家快速改源码自用
- 【云原生实用技巧】使用 skopeo 批量同步 helm chart 依赖镜像
- [MySQL Advanced] Creation and Management of Databases and Tables
- 中国企业构建边缘计算解决方案的最佳实践
- RPA power business automation super order!
- 21天打卡挑战学习MySQL——《MySQL工具的使用》第一周 第二篇
- 2019年10月SQL注入的两倍
猜你喜欢
随机推荐
Network basic learning series four (network layer, data link layer and some other important protocols or technologies)
utils timer
113. 授人以渔 - 如何自行查询任意 SAP UI5 控件属性的文档和技术实现细节
Testng监听器
HCIP BGP lab report
HCIP第十三天
2019年10月SQL注入的两倍
HDU 5655 CA Loves Stick
Data_web(九)mongodb增量同步到mongodb
亿流量大考(2):开发一套高容错分布式系统
Zilliz 2023 秋季校园招聘正式启动!
授人以渔 - 如何自行查询任意 SAP UI5 控件属性的文档和技术实现细节试读版
剑指offer第22题-链表中倒数第K个节点
生成器版和查看器版有什么区别?
Embedded Systems: GPIO
2022-08-02 mysql/stonedb slow SQL-Q18 - memory usage surge analysis
电商秒杀系统
2022-08-03 oracle执行慢SQL-Q17对比
Lift, Splat, Shoot: Encoding Images from Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 论文笔记
工作小计 QT打包