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图像基本处理

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python中如何打开csv文件_python如何读取csv文件

    python中如何打开csv文件_python如何读取csv文件python如何读取csv文件,我们这里需要用到python自带的csv模块,有了这个模块读取数据就变得非常容易了。工具/原料python3方法/步骤1这里以sublimetext3编辑器作为示范,新建一个文档。2我们可以先确认CSV文档是否可以正确打开。并且放在同一个文件夹里面。3importcsv这是第一步要做的,就是调用csv模块。4importcsvfile=open(‘data…

    2022年7月21日
    27
  • Java基础知识(知识点)

    Java基础知识(知识点)1 Java 是一种高级计算机语言 是可以编写跨平台应用软件 完全面向对象的程序设计语言 2 Java 划分为三个技术平台 JavaSE JavaEE JavaMEJavaSE 是桌面应用 JavaEE 是 web 应用 平台企业版 JavaME 是手机应用 平台微型版 3 Java 语言的特点 简单易用 安全可靠 跨平台 通过 Java 虚拟机实现 面向对象 支持多线程 自动进行垃圾回收 c 语言没有 Java 引入了虚拟机的概念 通过虚拟机 JVM 可以在不同的操作系统上运行 Java 程序 从而实现跨平台特

    2025年7月11日
    0
  • 利用NFS client provisioner动态提供Kubernetes后端存储卷–安装指南与实践[通俗易懂]

    利用NFS client provisioner动态提供Kubernetes后端存储卷–安装指南与实践[通俗易懂]利用NFS client provisioner动态提供Kubernetes后端存储卷–安装指南与实践

    2022年4月21日
    149
  • Mac book Pro_mac安装sas

    Mac book Pro_mac安装sasMacPorts和Homebrew都是MacOSX上的软件包管理工具(viaWikipedia),且它们之间是不兼容的.个中好处就不介绍了,这里要说的是删除MacPorts并安装Homebrew.准备条件:Mac是自带Ruby程式的,如果你之间”处理”过它,记得要确保它的…

    2022年9月21日
    0
  • 程序员喜欢穿格子衫的原因_为什么程序员喜欢穿格子衬衫

    程序员喜欢穿格子衫的原因_为什么程序员喜欢穿格子衬衫点击上方关注我们,让小care关爱你!在互联网时代下,今天的你不用在路边拦车,不用带现金出门,用一个手机解决生活所有的问题。这一切都离不开”程序员”的夜以继日传说,中文互联网有三大杀器:处女座、五仁月饼和格子衬衫,只要集齐它们就可以破碎山河撕裂人伦纵横四海。不知道从什么时候起,格子衬衫已经成为了程序员的代名词,有些时候,就连“程序媛”也无法幸免。(你猜此刻的小姐姐是怎样的表情)那其实你知…

    2022年10月4日
    0
  • 西门子plc485通讯控制变频器_西门子300plc波特率怎么改

    西门子plc485通讯控制变频器_西门子300plc波特率怎么改品牌:Endaic型号:CHNet-S7300MD产品简介CHNetS7-S7300MD用于西门子S7-200/SMARTS7-200/S7-300/S7-400/西门子数控840D、840DSL等PLC的以太网数据采集,非常方便构建生产管理系统。CHNetS7-S7300MD不占用PLC编程口,即编程软件/上位机软件通过以太网对PLC数据监控和采集的同时,触摸屏可以通过扩展RS485口与PLC进行通讯。CHNetS7-S7300MD支持工控领域内绝大多数SCADA软件,支持西门子S7TCP.

    2022年10月8日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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