图像尺寸调整属于基础的图像几何变换,TensorFlow提供了几种尺寸调整的函数:
tf.image.resize_images:将原始图像缩放成指定的图像大小,其中的参数method(默认值为ResizeMethod.BILINEAR)提供了四种插值算法,具体解释可以参考图像几何变换(缩放、旋转)中的常用的插值算法
tf.image.resize_image_with_crop_or_pad:剪裁或填充处理,会根据原图像的尺寸和指定的目标图像的尺寸选择剪裁还是填充,如果原图像尺寸大于目标图像尺寸,则在中心位置剪裁,反之则用黑色像素填充。
tf.image.central_crop:比例调整,central_fraction决定了要指定的比例,取值范围为(0,1],该函数会以中心点作为基准,选择整幅图中的指定比例的图像作为新的图像1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27import tensorflow as tf
import numpy as np
image_raw_data = tf.gfile.FastGFile("C:/Users/admin/Desktop/fish-bike.jpg","r").read();
"""
image= tf.image.decode_jpeg(image_raw_data)
print(image.eval(session=tf.Session()))
"""
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data,channels=3)
print(img_data.eval())
plt.imshow(img_data.eval())
plt.show()
resized = tf.image.resize_images(img_data,[200,200],method=0)
print("Digital type: ", resized.dtype)
resized = np.asarray(resized.eval(), dtype='uint8')
# tf.image.convert_image_dtype(rgb_image, tf.float32)
plt.imshow(resized)
plt.show()
croped = tf.image.resize_image_with_crop_or_pad(img_data, 100, 100)
padded = tf.image.resize_image_with_crop_or_pad(img_data, 500, 500)
plt.imshow(croped.eval())
plt.show()
plt.imshow(padded.eval())
plt.show()
central_cropped = tf.image.central_crop(img_data, 0.5)
plt.imshow(central_cropped.eval())
t.show()
可参考
https://cloud.tencent.com/developer/article/1010250
https://blog.csdn.net/chaipp0607/article/details/73029923