简单的图像预处理,包含对图像的反转和裁剪等基本操作,代码中有详细注释
#图像大小调整
import matplotlib.pyplot as plt
image_raw_data=tf.gfile.FastGFile("pic/ma.jpg","rb").read() #读图 图片不是utf8编码的话,就需要改成rb而不是r
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data) #解码
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.float32)
#在调整图片大小前,需要先对图片的数据类型进行转换
# method:0双线性插值,1最近邻 2双三次插值 3面积插值
resized=tf.image.resize_images(img_data,[300,300],method=0) #更改大小。会强制将图片压缩成要求的比例
croped=tf.image.resize_image_with_crop_or_pad(img_data,200,200) #进行居中裁剪
padded=tf.image.resize_image_with_crop_or_pad(img_data,600,600) #对周围的像素进行全0填充
central_cropped=tf.image.central_crop(img_data,0.5) #按照比例裁剪图像,后面的数字在0-1之间,是裁剪的比例
flipped=tf.image.flip_up_down(img_data) #上下反转
flipped_left=tf.image.flip_left_right(img_data) #左右反转
transposed=tf.image.transpose_image(img_data) #沿对角线反转
#以50%概率上下反转图像
flipped_up_maybe=tf.image.random_flip_up_down(img_data)
#以50%概率左右反转图像
flipped_left_maybe=tf.image.random_flip_left_right(img_data)
fig=plt.figure()
ax1=fig.add_subplot(3,1,1)
ax2=fig.add_subplot(3,1,2)
ax3=fig.add_subplot(3,1,3)
ax1.imshow(flipped_up_maybe.eval())
ax2.imshow(flipped_left_maybe.eval())
ax3.imshow(transposed.eval())
plt.show()