Python版本:3.6
TensorFlow版本:1.12.0
Matplotlib版本:3.1.1
tf.gfile.FastGFile()
读取图像tf.image.resize_images()
图像大小调整tf.image.resize_image_with_crop_or_pad()
图像裁剪或填充tf.image.central_crop()
按比例调整图像flipped = tf.image.flip_up_down(img_data)
:图像上下翻转flipped = tf.image.flip_left_right(img_data)
:图像左右翻转flipped = tf.image.transpose_image(img_data)
:图像对角翻转
目录
1、tf.gfile.FastGFile()
功能:读取图片tf.gfile.FastGFile(path,decodestyle)
path
:图片所在路径(如:E:/album/corgi.jpeg)decodestyle
:图片的解码方式。(‘r’:UTF-8编码; ‘rb’:非UTF-8编码)
代码1:
import tensorflow as tf
import matplotlib.pyplot as plt
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
plt.imshow(img_data.eval())
plt.show
读取的图片类型为jpeg
,如果读取的图片类型为png
,可以使用img_data = tf.image.decode_png(img_raw_data)
进行解码。
如果代码1无法显示图像,请尝试使用代码2。
代码2:matplotlib
还提供了一个名为pylab
的模块,其中包括了许多NumPy
和pyplot
模块中常用的函数,方便用户快速进行计算和绘图。
通过import pylab
导入,并将代码1的plt.show()
换成pylab.show()
。
import tensorflow as tf
import matplotlib.pyplot as plt
import pylab
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
plt.imshow(img_data.eval())
pylab.show()
效果:
2、tf.image.resize_images()
功能:调整图像大小img_data_resize1 = tf.image.resize_images(img_data, [x, y], method=0)
img_data
:原始图像(像素值在0.0-1.0范围内)[x, y]
:目标图像的大小method=0
:调整图像大小的算法
Mehod取值 | 图像大小调整算法 |
---|---|
0 | 双线性插值法(Bilinear interpolation) |
1 | 最近邻居法(Nearest neighbor interpolation) |
2 | 双三次插值法(Bicubic interpolation) |
3 | 面积插值法(Area interpolation) |
代码:
import tensorflow as tf
import matplotlib.pyplot as plt
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
plt.imshow(img_data.eval())
plt.show()
# 将0-255的像素值转化为0.0-1.0范围内的实数。
img_data_float = tf.image.convert_image_dtype(img_data, dtype=tf.float32)
img_data_resize = tf.image.resize_images(img_data_float, [300, 300], method=0)
plt.imshow(img_data_resize.eval())
plt.show()
效果:
3、tf.resize_image_with_crop_or_pad()
功能:裁剪或填充图像,tf.image.resize_image_with_crop_or_pad(img_data, x, y)
img_data
:原始图像。x
、y
:目标图像的大小。
如果原始图像尺寸大于目标图像,那么函数会自动截取原始图像居中的部分;如果原始图像尺寸小于目标图像,那么函数会自动在原始图像的四周填充0背景。
代码:
import tensorflow as tf
import matplotlib.pyplot as plt
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
plt.imshow(img_data.eval())
plt.show()
croped = tf.image.resize_image_with_crop_or_pad(img_data, 300, 300)
padded = tf.image.resize_image_with_crop_or_pad(img_data, 2000, 2000)
plt.imshow(croped.eval())
plt.show()
plt.imshow(padded.eval())
plt.show()
效果:
4、tf.image.central_crop()
功能:按比例调整图像(基准点为图像中心)central_cropped = tf.image.central_crop(img_data, alpha)
img_data
:原始图像。alpha
:比例系数,取值范围
代码:
import tensorflow as tf
import matplotlib.pyplot as plt
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
central_cropped = tf.image.central_crop(img_data, 0.5)
plt.imshow(central_cropped.eval())
plt.show()
效果:
5、图像翻转
功能:图像翻转flipped = tf.image.flip_up_down(img_data)
:图像上下翻转flipped = tf.image.flip_left_right(img_data)
:图像左右翻转flipped = tf.image.transpose_image(img_data)
:图像对角翻转
代码:
import tensorflow as tf
import matplotlib.pyplot as plt
# 读取图片
img_raw_data = tf.gfile.FastGFile("E:/album/corgi.jpeg", 'rb').read()
with tf.Session() as sess:
img_data = tf.image.decode_jpeg(img_raw_data) # 图像解码
print(img_data.eval()) # 打印解码后的图像,三维矩阵
flipped_1 = tf.image.flip_up_down(img_data) # 上下翻转
flipped_2 = tf.image.flip_left_right(img_data) # 左右翻转
flipped_3 = tf.image.transpose_image(img_data) # 对角线翻转
fig = plt.figure()
img = fig.add_subplot(221)
plt.imshow(img_data.eval())
img = fig.add_subplot(222)
plt.imshow(flipped_1.eval())
img = fig.add_subplot(223)
plt.imshow(flipped_2.eval())
img = fig.add_subplot(224)
plt.imshow(flipped_3.eval())
plt.show()
效果:
来源:CSDN
作者:See_Star
链接:https://blog.csdn.net/See_Star/article/details/103452917