图像处理:图像翻转(tf.image.random_flip_up_down)和裁剪( tf.image.resize_image_with_crop_or_pad)

图像的翻转

# 图像翻转,上下翻转
flipped1 = tf.image.random_flip_up_down(image_data)
# 左右翻转
flipped2 = tf.image.random_flip_left_right(image_data)
# 沿对角线翻转
transposed = tf.image.transpose_image(image_data)

图像的裁剪

croped = tf.image.resize_image_with_crop_or_pad(image_data, 100, 100)
padded = tf.image.resize_image_with_crop_or_pad(image_data, 400, 400)

通过tf.image.resize_image_with_crop_or_pad函数调整图像的大小。这个函数的第一个参数为原始图像,后面两个参数是调整后的目标图像大小。如果原始图像的尺寸大于目标图像,那么这个函数会自动截取原始图像中剧中的部分。如果目标图像大于原始图像,这个函数会自动在原始图像的四周填充全0背景。(这里我的原始图像为 200*200,所以上面是裁剪,下面是填充)

"""
图片 处理
by song
stay calm stay peace
"""

# matplotlib.pyplot 是一个python的画图工具。可以可视化tensorflow对图像的处理过程
import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

# 读取图像的原始数据
image_raw_data = tf.gfile.FastGFile('/lena.jpg', 'rb').read()

with tf.Session() as sess:
    # 将图像使用JPEG的格式解码从而得到图像对应的三维矩阵。Tensorflow还提供了 tf.image.decode_png函数对png格式的图像进行编码。
    # 解码之后的结果为一个张量, 在使用他的取值之前需要明确调用运行的过程。
    image_data = tf.image.decode_jpeg(image_raw_data)
    # Decode a JPEG-encoded image to a uint8 tensor 所以这里的 image_data 已经是一个tsnsor
    
    # 通过tf.image.resize_image_with_crop_or_pad函数调整图像的大小。这个函数的第一个参数为原始图像,后面两个参数是调整后
    # 的目标图像大小。如果原始图像的尺寸大于目标图像,那么这个函数会自动截取原始图像中剧中的部分。如果目标图像大于原始图
    # 像,这个函数会自动在原始图像的四周填充全0背景
    croped = tf.image.resize_image_with_crop_or_pad(image_data, 100, 100)
    padded = tf.image.resize_image_with_crop_or_pad(image_data, 400, 400)
    # plt.imshow(croped.eval())
    # plt.show()
    # plt.imshow(padded.eval())
    # plt.show()
   
    # 图像翻转,上下翻转
    flipped1 = tf.image.random_flip_up_down(image_data)
    # 左右翻转
    flipped2 = tf.image.random_flip_left_right(image_data)
    # 沿对角线翻转
    transposed = tf.image.transpose_image(image_data)

猜你喜欢

转载自blog.csdn.net/qq_43225437/article/details/88019048