1、tensorflow中对jpeg格式图像的编码/解码函数:

import matplotlib.pyplot as plt
import tensorflow as tf
image_raw_data=tf.gfile.FastGFile('/Users/jk/Downloads/timg.jpeg','rb').read()
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data) #通过tf.img.decode_jpeg函数对jpeg格式的图像进行解码,解码后的结果为一个张量
print(img_data.eval()) #输出解码后的三维矩阵
plt.imshow(img_data.eval())
plt.show()
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.uint8)
encode_image=tf.image.encode_jpeg(img_data) #将图像的三维矩阵重新按照jpeg格式编码存入文件,打开该图像可以得到和原始图像一样的图像
with tf.gfile.GFile('/Users/jk/Downloads/output','wb') as f: #将文件写入目标路径,生成图像文件
f.write(encode_image.eval())

2、图像大小调整(和上面的类似,仅多了图像大小调整的部分,下面的例子将类似):

import matplotlib.pyplot as plt
import tensorflow as tf
image_raw_data=tf.gfile.FastGFile('/Users/jk/Downloads/timg.jpeg','rb').read()
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data)
print(img_data.eval())
plt.imshow(img_data.eval())
plt.show()
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.uint8)
resized=tf.image.resize_images(img_data,size=[300,300],method=1) #将图像大小转为[300,300],图像深度在没有明确设置前会是?,
print(resized.get_shape())
resized=tf.image.convert_image_dtype(resized,dtype=tf.uint8) #数据预处理时候会把dtype转为tf.float32,因此需要手动转回tf.uint8
encode_image=tf.image.encode_jpeg(resized)
with tf.gfile.GFile('/Users/jk/Downloads/output','wb') as f: #返回调整大小后的图像
f.write(encode_image.eval())

通过tf.image.resize_image_with_crop_or_pad函数来调整图像大小的功能:

croped=tf.image.resize_image_with_crop_or_pad(img_data,3000,3000)  #将图像数据扩充为3000x3000,若图像大小大于原始数据,则使用全0填充。

通过tf.image.central_crop函数来对图像按比例进行裁剪:

central_cropped=tf.image.central_crop(img_data,0.8)   #按比例进行缩小,后面的比例必须是一个(0,1]的实数。

通过tf.image.flip_up_down函数来进行图像翻转:

flipped=tf.image.flip_up_down(img_data)   #上下翻转
flipped=tf.image.flip_left_right(img_data) #左右翻转
flipped=tf.image.transpose_image(img_data) #沿对角线翻转

3、图像的色彩调整

通过tf.image.adjust_brightness函数进行色彩调整:

adjusted=tf.image.adjust_brightness(img_data,-0.5)  #将图像的亮度-0.5
adjusted=tf.image.adjust_brightness(img_data,+0.5) #将图像的亮度+0.5
adjusted=tf.image.random_brightness(img_data,max_delta) #将图像的亮度在[-max_delta,max_delta]范围内随机调整

通过tf.image.adjust_contrast函数来调整图像的对比度:

adjusted=tf.image.adjust_contrast(img_data,5)   #将图像的对比度+5
adjusted=tf.image.random_contrast(img_data,lower,upper) #在[lower, upper]范围内随机调整图像的对比度

通过tf.image.adjust_hue函数来调整图像的色相:

adjusted=tf.image.adjust_hue(img_data,0.5)   #将图像的色相加0.5
adjusted=tf.image.random_hue(img_data,max_delta) #在[-max_delta,max_delta]范围内随机调整图像的色相

通过tf.image.adjust_saturation函数调整图像的饱和度:

adjusted=tf.image.adjust_saturation(img_data,-5)   #将图像的饱和度-5
adjusted=tf.image.random_saturation(img_data,lower,upper) #随机调整图像的饱和度

通过tf.image.per_image_whitening函数来对图像进行标准化:

adjusted=tf.image.per_image_standardization(img_data)   #对图像进行标准化,转化成亮度均值为0,方差为1.

4、处理标注框:

通过tf.image.draw_bounding_boxes函数在图像中加入标注框

import matplotlib.pyplot as plt
import tensorflow as tf
image_raw_data=tf.gfile.FastGFile('/Users/jk/Downloads/timg.jpeg','rb').read()
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data) #通过tf.img.decode_jpeg函数对jpeg格式的图像进行解码,解码后的结果为一个张量
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.uint8)
img_data=tf.image.resize_images(img_data,[180,267],method=1)
batched=tf.expand_dims(tf.image.convert_image_dtype(img_data,tf.float32),0)
boxes=tf.constant([[[0.05,0.05,0.9,0.7],[0.35,0.47,0.5,0.56]]])#标注框的表示形式:[y_min, x_min, y_max, x_max],组成部分为3维数组,分别对应[batch, N, 4],左边的boxes的shape为[1,2,4]
result=tf.image.draw_bounding_boxes(batched,boxes)
plt.imshow(result[0].eval())
plt.show()

 5、提取标注框内的图像:(不知道为何画出来的标注框和通过标注框截取的内容不一致)

import matplotlib.pyplot as plt
import tensorflow as tf
image_raw_data=tf.gfile.FastGFile('C:/Users/1/Desktop/01.jpg','rb').read()
with tf.Session() as sess:
img_data=tf.image.decode_jpeg(image_raw_data) #通过tf.img.decode_jpeg函数对jpeg格式的图像进行解码,解码后的结果为一个张量
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.uint8)
img_data=tf.image.resize_images(img_data,[180,267],method=1)
boxes=tf.constant([[[0.35,0.1,0.8,0.7],[0.4,0.47,0.5,0.56]]]) #通过提供标注框的方式告诉随机截图的算法哪些部分是有信息量的
begin,size,bbox=tf.image.sample_distorted_bounding_box(tf.shape(img_data),bounding_boxes=boxes)
batched=tf.expand_dims(tf.image.convert_image_dtype(img_data,tf.float32),0) #需要增加一维才能画框
img_with_box=tf.image.draw_bounding_boxes(batched,bbox) #在原图像的基础上画标注框
distorted_image=tf.slice(img_data,begin,size) #截取随机得到的图像
plt.imshow(distorted_image.eval())
plt.show()
plt.imshow(img_with_box[0].eval())
plt.show()

tensorflow图像处理函数(1)的更多相关文章

  1. TensorFlow图像处理函数

    参考书 <TensorFlow:实战Google深度学习框架>(第2版) 图像编码处理+图像大小调整+图像翻转+图像色彩调整+处理标注框 #!/usr/bin/env python # - ...

  2. 吴裕雄 python 神经网络——TensorFlow 图像处理函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt image_raw_data = tf.gfile ...

  3. 吴裕雄--天生自然 pythonTensorFlow图形数据处理:TensorFlow图像处理函数

    import numpy as np import tensorflow as tf import matplotlib.pyplot as plt #读取图片 image_raw_data = tf ...

  4. Tensorflow图像处理

    Tensorflow图像处理主要包括:调整尺寸,图像翻转,调整色彩,处理标注框. 代码如下: #coding=utf-8 import matplotlib.pyplot as plt import ...

  5. Matlab图像处理函数:regionprops

    本篇文章为转载,仅为方便学术讨论所用,不用于商业用途.由于时间较久,原作者以及原始链接暂时无法找到,如有侵权以及其他任何事宜欢迎跟我联系,如有侵扰,在此提前表示歉意.----------------- ...

  6. tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例

    tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例 #!/usr/bin/env python # -*- coding: utf-8 ...

  7. 深度学习TensorFlow常用函数

    tensorflow常用函数 TensorFlow 将图形定义转换成分布式执行的操作, 以充分利用可用的计算资源(如 CPU 或 GPU.一般你不需要显式指定使用 CPU 还是 GPU, Tensor ...

  8. php GD 和图像处理函数, 用 STHUPO.TTF 字体向图像写入文本

    php GD 和图像处理函数,   用  STHUPO.TTF 字体向图像写入文本 注意: 01)   imagettftext() 这个函数不能使用相对路径, 要想使用相对路径要先使用  puten ...

  9. php GD 和图像处理函数, 制作一张图片

    php GD 和图像处理函数, 制作一张图片 // GD 和图像处理函数 // https://www.php.net/manual/zh/ref.image.php // https://www.p ...

随机推荐

  1. 微信企业号 发送信息 shell

    微信企业号发送信息shell #可作为shell函数模块调用,用于微信通知.jenkins发版微信通知等等 # 微信API官方文档 https://work.weixin.qq.com/api/doc ...

  2. Pycharm中使用virtualenv创建虚拟环境

    虚拟环境是Python解释器的一个私有副本,在这个环境中你可以安装私有包,而且不会影响系统中安装的全局Python解释器. 虚拟环境非常有用,可以在系统的Python解释器中避免包的混乱和版本的冲突. ...

  3. linux下安装python27 nginx 和uwsgi

    注意: python27 默认没有安装 pip 和setuptools所以要提前安装.(务必先提前安装python27 哈 ) wget --no-check-certificate https:// ...

  4. 存储过程SET XACT_ABORT ON

    设置事务回滚的当为ON时,如果你存储中的某个地方出了问题,整个事务中的语句都会回滚为OFF时,只回滚错误的地方

  5. xml与Properties的区别

    1.properties配置文件,是一个属性对应于一个值(key = value)这样的键值匹对模式: 每一行properties配置文件的键值,对应着一次赋值: 特殊点: 在前后两行properti ...

  6. hdu-2255.奔小康赚大钱(最大权二分匹配)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  7. 《剑指offer》面试题20 顺时针打印矩阵 Java版

    我的方法:遇到这种题最好在纸上画一画打印路线.我利用了4个标志left.top.right.bottom,表示当前需要打印的左界.上届.右界和下界,换句话说这些界线之外的已经打印了,如此一来判断结束的 ...

  8. OSI模型——传输层

    OSI模型——传输层 运输层 运输层概述 运输层提供应用层端到端通信服务,通俗的讲,两个主机通讯,也就是应用层上的进程之间的通信,也就是转换为进程和进程之间的通信了,我们之前学到网络层,IP协议能将分 ...

  9. [THUPC2018] 弗雷兹的玩具商店

    link $solution:$ 好久没写数据结构了,那就写道简单题吧! 可以发现 $m\leq 50$,所以可以去取在 $[l,r]$ 中当价格相同时愉悦值最高的做完全背包 $dp$ . 发现修改价 ...

  10. Aurora测试----随机数字产生

    在xilinx模板中,存在一个Aurora样本工程,包含众多的子函数,本系列本文将逐一对其进行解析,首先是aurora_8b10b_0_FRAME_GEN函数,根据官方的说明,其作用是:该模块是一个模 ...