Tensorflow深度学习之十二:基础图像处理之二
from:https://blog.csdn.net/davincil/article/details/76598474

 

首先放出原始图像:

1、图像的翻转

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # 上下翻转图像 up_and_down = tf.image.flip_up_down(image_data) cv2Show("up and down",up_and_down) # 左右翻转图像 left_and_right = tf.image.flip_left_right(image_data) cv2Show("left and right", left_and_right) # 沿对角线翻转图像 transposed = tf.image.transpose_image(image_data) cv2Show("transposed image", transposed) # 以一定概率上下翻转图像 random_up_and_down = tf.image.random_flip_up_down(image_data) cv2Show("random up and down", random_up_and_down) # 以一定概率左右翻转图像 random_left_and_right = tf.image.random_flip_left_right(image_data) cv2Show("random left and right", random_left_and_right) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60

程序运行结果如下:

注:由于个人的显示器限制,这里只截取了部分的对角线翻转的图像。

注:可以看到这里按照一定的概率翻转,只有上下进行了翻转,而左右并没有翻转。

2、图像的亮度调整

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # 将图片的亮度-0.5 adjusted1 = tf.image.adjust_brightness(image_data, -0.5) cv2Show("brightness -0.5", adjusted1) # 将图片的亮度+0.5 adjusted2 = tf.image.adjust_brightness(image_data, 0.5) cv2Show("brightness +0.5",adjusted2) # 随机调整图像的亮度: # random_brightness(image, max_delta, seed=None) # image:待调整的图像 # max_delta:在[-max_delte,max_delte)的范围随机调整图像的亮度 # seed:随机数种子 adjusted3 = tf.image.random_brightness(image_data, 0.3) cv2Show("random brightness", adjusted3) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

程序运行如下:

3、调整图像的对比度

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # 将图片的对比度-5 adjusted1 = tf.image.adjust_contrast(image_data, -5) cv2Show("contrast -5", adjusted1) # 将图片的对比度+5 adjusted2 = tf.image.adjust_contrast(image_data, 5) cv2Show("contrast +5",adjusted2) # 随机调整图像的对比度: # random_contrast(image, lower, upper, seed=None) # image:待调整的图像 # lower,upper:在[lower,upper]的范围随机调整图像的对比度。lower非负。 # seed:随机数种子 adjusted3 = tf.image.random_contrast(image_data, 1, 9) cv2Show("random contrast", adjusted3) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

程序运行如下:

4、调整图像的色相

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # adjust_hue(image, delta, name=None) # delte的范围:[-1,1] # 将图片的色相+0.1 adjusted1 = tf.image.adjust_hue(image_data, 0.1) cv2Show("hue +0.1", adjusted1) # 将图片的色相+0.3 adjusted2 = tf.image.adjust_hue(image_data, 0.3) cv2Show("hue +0.3", adjusted2) # 将图片的色相+0.6 adjusted3 = tf.image.adjust_hue(image_data, 0.6) cv2Show("hue +0.6", adjusted3) # 将图片的色相+0.9 adjusted4 = tf.image.adjust_hue(image_data, 0.9) cv2Show("hue +0.9", adjusted4) # 随机调整图像的色相: # random_hue(image, max_delta, seed=None) # image:待调整的图像 # max_delta:在[-max_delta,max_delta]的范围随机调整图像的色相。max_delta的范围[0,0.5]。 # seed:随机数种子 adjusted5 = tf.image.random_hue(image_data,0.4) cv2Show("random hue", adjusted5) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66

程序运行结果如下:

5、调整图像的饱和度

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # 将图片的饱和度-5 adjusted1 = tf.image.adjust_saturation(image_data, -5) cv2Show("saturation -5", adjusted1) # 将图片的饱和度+5 adjusted2 = tf.image.adjust_saturation(image_data, 5) cv2Show("saturation +5", adjusted2) # 随机调整图像的饱和度: # random_saturation(image, lower, upper, seed=None) # image:待调整的图像 # lower,upper:在[lower,upper]的范围随机调整图像的饱和度。lower非负。 # seed:随机数种子 adjusted3 = tf.image.random_saturation(image_data, 1, 9) cv2Show("random saturation", adjusted3) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56

程序运行结果如下:

6、图像的标准化

import tensorflow as tf
import cv2# 这里定义一个tensorflow读取的图片格式转换为opencv读取的图片格式的函数
# 请注意: # 在tensorflow中,一个像素点的颜色顺序是R,G,B。 # 在opencv中,一个像素点的颜色顺序是B,G,R。 # 因此,我们循环遍历每一个像素点,将第0位的颜色和第2位的颜色数值换一下即可。 # 第一个参数name:将要显示的窗口名称。 # 第二个参数image:储存图片信息的一个tensor。 def cv2Show(name="", image=None): # 获取矩阵信息 np = image.eval() # 获取行数列数 row, col = len(np),len(np[1]) # 两重循环遍历 for i in range(row): for j in range(col): # 交换数值 tmp = np[i][j][0] np[i][j][0] = np[i][j][2] np[i][j][2] = tmp # 显示图片 cv2.imshow(name,np) pass # tensorflow会话 with tf.Session() as sess: # 以二进制的方式读取图片。 image_raw_data = tf.gfile.FastGFile("bus.jpg", "rb").read() # 按照jpeg的格式解码图片。 image_data = tf.image.decode_jpeg(image_raw_data) # 显示原图片。 cv2Show("Read by Tensorflow+Dispalyed by Opencv",image_data) # 将代表一张图像的三维矩阵中的数字均值变成0,方差变为1。 adjusted = tf.image.per_image_standardization(image_data) cv2Show("image_standardization", adjusted) cv2.waitKey()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

程序运行结果如下:

转载于:https://www.cnblogs.com/bonelee/p/8953597.html

Tensorflow深度学习之十二:基础图像处理之二相关推荐

  1. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  2. 前几帧预测 深度学习_使用深度学习从十二导联心电图预测心律失常

    上集讲到 使用深度学习 从单导联预测房颤 这一集 将继续讨论该问题 单导联心电图 对心律失常的预测作用 非常有限 因为 单导联的信号很有限 临床上需要结合 多导联心电图 判断 心律失常的类型 这一集的 ...

  3. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

    目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...

  4. 转:tensorflow深度学习实战笔记(二):把训练好的模型进行固化

    原文地址:https://blog.csdn.net/chenyuping333/article/details/82106863 目录 一.导出前向传播图 二.对模型进行固化 三.pb文件转tfli ...

  5. 深度学习 - 第二章 - 机器学习基础

    深度学习 - 第二章 - 机器学习基础 第二章 机器学习基础 2.1 各种常见算法图示 2.2 监督学习.非监督学习.半监督学习.弱监督学习? 2.3 监督学习有哪些步骤 2.4 多实例学习? 2.5 ...

  6. 推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!

    推荐系统中的核心是从海量的商品库挑选合适商品最终展示给用户.由于商品库数量巨大,因此常见的推荐系统一般分为两个阶段,即召回阶段和排序阶段.召回阶段主要是从全量的商品库中得到用户可能感兴趣的一小部分候选 ...

  7. 基于TensorFlow深度学习框架,运用python搭建LeNet-5卷积神经网络模型和mnist手写数字识别数据集,设计一个手写数字识别软件。

    本软件是基于TensorFlow深度学习框架,运用LeNet-5卷积神经网络模型和mnist手写数字识别数据集所设计的手写数字识别软件. 具体实现如下: 1.读入数据:运用TensorFlow深度学习 ...

  8. 深度学习崛起十年:“开挂”的OpenAI革新者

    来源|The Robot Brains Podcast 编译|OneFlow社区 AlexNet,AlphaGo,GPT.CLIP.DALL-E和Codex,这些在AI界轰动一时的杰作,对于任何一个A ...

  9. 深度学习未来十大趋势

    深度学习未来十大趋势 [日期:2015-12-22] 来源: 作者:张巨岩 [字体:大 中 小] 本周,我在加拿大蒙特利尔参加了NIPS(Neural Information Processing S ...

最新文章

  1. NEU 1497 Kid and Ants 思路 难度:0
  2. python3爬取带密码的网站_Python3 爬取网站收藏数超过70的 情侣网名
  3. js中关于Blob对象的介绍与使用
  4. Python第一次周考(0402)
  5. [Leetcode][第96题][JAVA][不同的二叉搜索树][动态规划][数学]
  6. 云图说 | 揭秘云硬盘高可靠性的秘密,速来围观
  7. 三星Galaxy Note 10+真机照公布:居中开孔前摄实锤
  8. mysqldump全量+增量备份
  9. 高新区 中国智慧城市大数据创新联盟揭牌
  10. 基于java象棋游戏_基于JAVA技术的中国象棋游戏设计与实现
  11. SaaS到底是什么?如何做?
  12. Windows安全更新出现0x800f081f错误解决方案
  13. python 爬取数据(CBA所有球队数据) -爬虫
  14. https://start.spring.io‘ 的初始化失败请检查 URL、网络和代理设置
  15. 单片机双机通信c语言,单片机双机通信(C51程序)
  16. Python经典例题——猜水果系统
  17. 旗舰级安卓手机推荐 2022年不如买它
  18. android b571 版本,HUAWEI Mate 7 EMUI 4.0.1 B571 版本发布说明及问题反馈
  19. 统信UOS系统无法卸载软件怎么办
  20. 【webpack】前端工程化与webpack

热门文章

  1. oracle text db2,从Oracle 到DB2(一)
  2. 谈谈java面向对象之抽象,手把手带你搞定java面试之面向对象
  3. Linux之Sed工具的使用详解
  4. stm32cubeide烧写程序_stm32mp157 Cortex M4开发篇:stm32CubeIDE开发环境搭建
  5. ttc转ttf在线网站_文件格式怎么在线互转?迅捷PDF转换器告诉你
  6. 初识好朋友计算机课件,初识电脑朋友.ppt
  7. 代币转账_手把手教你从源代码开始搭建多节点以太坊私链(五)部署智能合约及代币发行...
  8. 浏览器加载本地html页面,在浏览器字段中加载本地HTML文件时是否显示白屏?
  9. R语言ineq算基尼系数_5 月编程语言排行榜:Java第一,R跌出Top20
  10. React Native 环境搭建步骤