tensorflow图像基本处理

tensorflow库提供的专门的图片处理库,以下只是部分示例,更多函数请参照源码‘\tensorflow\_api\v1\image\__init__.py’加载图像方式1:使用tf.gfil

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

tensorflow库提供的专门的图片处理库,以下只是部分示例,更多函数请参照源码‘\tensorflow_api\v1\image_init_.py’

加载图像

方式1:

使用tf.gfile.GFile以二进制方式读jpg文件,然后通过tf.image.decode_jpeg进行解码
注函数都返回tensor张量,需在session中运行
import tensorflow as tf
import matplotlib.pyplot as plt
image_raw = tf.gfile.GFile('./image/cat/cat.jpg','rb').read()
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    plt.imshow(image_data.eval())
    plt.show()

tensorflow图像基本处理

上面的方法不太适合读取批量数据,批量读取可以采用另一种方式,把图像看成一个文件,用队列的方式进行读取,在tensorflow中,队列不仅仅是一种数据结构,更提供多线程机制

方法2:批量读取文件

path1 = './image/cat/cat.jpg'
file_queue = tf.train.string_input_producer([path1]) #创建输入队列
image_reader = tf.WholeFileReader()
_,image=image_reader.read(file_queue)  #将完整的文件加载到内存
image = tf.image.decode_jpeg(image)

with tf.Session() as sess:
    coord = tf.train.Coordinator() #协同启动的线程
    threads = tf.train.start_queue_runners(sess=sess,coord=coord) #启动线程运行
    plt.imshow(image.eval())
    plt.show()
    coord.request_stop() #通在所有的线程
    coord.join(threads)

tensorflow图像基本处理

调整图像大小

通过tf.image.resize_image()来调整图片大小

函数原型:

tf.image.resize_images(
                images,
                size,
                method=ResizeMethod.BILINEAR,
                align_corners=False,
                preserve_aspect_ratio=False)

参数:

method:图片形状调整方法,可以取下面的值
        ResizeMethod.BILINEAR:默认方法,双线性插值
        ResizeMethod.NEAREST_NEIGHBOR:最近邻插值
        ResizeMethod.BICUBIC:双三次插值
        ResizeMethod.AREA:区域插值
align_corners:布尔型参数,默认为False,为True时,输入张量和输出张量的四个角的像素点的中心是对齐的,保留四个角的像素值
preserve_aspect_ratio:布尔型参数,默认为False,设置是否保持输入图片的长、宽比,如果设置为True,输入图像 images 的尺寸将调整为输入 size 的大小,同时保持原始输入图片的长宽比。如果输入 size 的比输入图像 images的尺寸大,将会按照比例放大输入图像 images
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
image_raw = tf.gfile.GFile('./image/cat/cat.jpg','rb').read()
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    resized = tf.image.resize_images(image_data,[300,300],method=0)
    plt.imshow(np.asarray(resized.eval(),dtype='uint8'))
    plt.show()

tensorflow图像基本处理

剪切和填充图像

tf.image.resize_image_with_crop_or_pad()

函数原型:

def resize_image_with_crop_or_pad(image, target_height, target_width):
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy as np
image_raw = tf.gfile.GFile('./image/cat/cat.jpg','rb').read()
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    resized = tf.image.resize_image_with_crop_or_pad(image_data,1000,1000)
    plt.imshow(np.asarray(resized.eval(),dtype='uint8'))
    plt.show()

tensorflow图像基本处理

对角线翻转图像

函数原型:

tf.image.transpose_image(image)
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    resized = tf.image.transpose_image(image_data)
    plt.imshow(np.asarray(resized.eval(),dtype='uint8'))
    plt.show()

tensorflow图像基本处理

调整图像色彩

def adjust_brightness(image, delta)

def random_brightness(image, max_delta, seed=None)

max_delta:最大差量
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    brightness = tf.image.random_brightness(image_data,max_delta=0.4,seed=42)
    plt.imshow(np.asarray(brightness.eval(),dtype='uint8'))
    plt.show()

tensorflow图像基本处理

调整图像色调饱和度

def adjust_hue(images, delta, name=None)

delta:差量
with tf.Session() as sess:
    image_data = tf.image.decode_jpeg(image_raw)
    adjust_hue = tf.image.adjust_hue(image_data,delta=0.4)
    plt.imshow(np.asarray(adjust_hue.eval(),dtype='uint8'))
    plt.show()

tensorflow图像基本处理

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120020.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • UML详解之四——活动图[通俗易懂]

    UML详解之四——活动图[通俗易懂]活动图(面向活动的)活动图(ActivityDiagrams)在本质上就是流程图,它很好地描述了系统的活动、判定点、先后顺序和分支等,展现从一个活动到另一个活动的控制流。因此它是一种能够描述系统功能流程的工具也是用例图的很好补充。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。图片来自http://blog.csdn.net/lishehe/article/detai

  • 开启1521端口监听_解决Oracle服务端1521端口无法telnet,服务名未开启监听问题

    开启1521端口监听_解决Oracle服务端1521端口无法telnet,服务名未开启监听问题场景:oracle服务安装在windows本地,oracle客户端在虚拟机中,使用虚拟机连接windows的oracle数据库。问题1:使用虚拟机telnet我本地oracle1521端口,不通解决思路:关闭虚拟机linux防火墙(这个方法有点粗暴,建议在只需要修改防火墙的端口允许通过即可)#1:查看防火状态systemctlstatusfirewalldserviceiptables…

  • Apache <mark>Karaf</mark>用户指导

    Apache <mark>Karaf</mark>用户指导

  • Ubutu/Debian使用 VSFTPD架设FTP服务器小结

    Ubutu/Debian使用 VSFTPD架设FTP服务器小结架设FTP服务器有好几次了,以前搭建好以后,没有记录操作的详细步骤,过阵时间又忘记了。此次架设FTP服务的需求要点:vsftpdmysql虚拟用户虚拟目录 只读用户 只写用户读写用户。1.安装软件:sudoapt-getinstallvsftpdlibpam-mysqlmysql-server安装MySQL过程中会询问MYSQL的root密码,输入两遍,以

  • git更改用户名邮箱_公司给了个git账号怎么配置

    git更改用户名邮箱_公司给了个git账号怎么配置我们可以先查看一下git的配置列表:gitconfig–list1.查看用户名和邮箱地址gitconfiguser.namegitconfiguser.email2.修改全局用户名和邮箱地址:gitconfig–globaluser.name”username111″gitconfig–globaluser.email”email111″3.修改局部用户名和邮箱地址:cd~/youproject…

  • python微信刷屏_拍一拍,微信史上最短一行代码

    python微信刷屏_拍一拍,微信史上最短一行代码今日推文说明二条:Python办公自动化|从Word到Excel三条:17个Python的牛逼骚操作,你都OK吗?↑关注+星标,后台回复【大礼包】送你Python自学大礼包图片来自不正经程序员…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号