Tensorflow深度学习之十二:基础图像处理之二

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

时间: 2024-11-18 17:10:56

Tensorflow深度学习之十二:基础图像处理之二的相关文章

TensorFlow深度学习基础与应用实战高清视频教程

TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用. 视频目录如下: 你能学到那些内容预览: TensorFlow深度学习基础与应用实战高清视频教程,适合Python C++ C#视觉应用开发者,基于TensorFlow深度学习框架,讲解TensorFlow基础.图像分类.目标检测训练与测试以及后期在C++和C#的应用.

算法工程师耗尽心血终成TensorFlow深度学习应用实践,值得一学!

本篇总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力.全篇力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法.高级模型设计和对应的程序编写. 本篇强调理论联系实际,重点介绍TensorFlow编程解决图像识别的应用,提供了大量数据集,并以代码的形式实现了深度学习模型,以供读者参考. 本篇可作为学习人工神经网络.深度学习TensorFlow 程序设计以及图像处理等相关内容的程序设计人员学习.

(转) TensorFlow深度学习,一篇文章就够了

TensorFlow深度学习,一篇文章就够了 2016/09/22 · IT技术 · TensorFlow, 深度学习 分享到:6 原文出处: 我爱计算机 (@tobe迪豪 ) 作者: 陈迪豪,就职小米科技,深度学习工程师,TensorFlow代码提交者. TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe.Theano.Torch.MXNet等框

(转载)深度学习三十年创新路

转载自:http://36kr.com/p/533832.html 编者注:深度学习火了,从任何意义上,大家谈论它的热衷程度,都超乎想象.但是,似乎很少有人提出不同的声音,说深度学习的火热,有可能是过度的繁荣,乃至不理性的盲从.而这次,有不同的想法出现了. 本篇文章来自依图科技 CEO Leo的投稿,依图科技是一家专注研究CV(Computer Vison,计算机视觉)的以技术驱动的创业公司,Leo自己也在这一领域有深入研究,因此这次写下这篇文章,希望回顾一下深度学习三十年的创新之路. 近期Na

深度学习三十年创新路

深度学习三十年创新路 编者注:深度学习火了,从任何意义上,大家谈论它的热衷程度,都超乎想象.但是,似乎很少有人提出不同的声音,说深度学习的火热,有可能是过度的繁荣,乃至不理性的盲从.而这次,有不同的想法出现了. 本篇文章来自依图科技 CEO Leo的投稿,依图科技是一家专注研究CV(Computer Vison,计算机视觉)的以技术驱动的创业公司,Leo自己也在这一领域有深入研究,因此这次写下这篇文章,希望回顾一下深度学习三十年的创新之路. 近期Nature杂志刊登了Lecun.Bengio.H

问题集录--TensorFlow深度学习

TensorFlow深度学习框架 Google不仅是大数据和云计算的领导者,在机器学习和深度学习上也有很好的实践和积累,在2015年年底开源了内部使用的深度学习框架TensorFlow. 与Caffe.Theano.Torch.MXNet等框架相比,TensorFlow在Github上Fork数和Star数都是最多的,而且在图形分类.音频处理.推荐系统和自然语言处理等场景下都有丰富的应用.最近流行的Keras框架底层默认使用TensorFlow,著名的斯坦福CS231n课程使用TensorFlo

C++学习笔记十六-模板和泛型编程(二)

C++学习笔记十六-模板和泛型编程(二) 16.4 类模板成员 1.模板作用域中模板类型的引用: 通常,当使用类模板的名字的时候,必须指定模板形参.这一规则有个例外:在类本身的作用域内部,可以使用类模板的非限定名.例如,在默认构造函数和复制构造函数的声明中,名字 Queue 是 Queue<Type> 缩写表示.实质上,编译器推断,当我们引用类的名字时,引用的是同一版本.因此,复制构造函数定义其实等价于: Queue<Type>(const Queue<Type> &a

《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/1Z5xJw4WWbJmJJlF4zvSXlA 更多资料分享:https://pan.baidu.com/s/1g4hv05UZ_w92uh9NNNkCaA <TensorFlow深度学习>高清中文版PDF+英文版PDF+源代码高清中文版PDF,245页,带书签目录,文字可以复制粘贴:高清英文版PDF,436页,带书签目录,文字可以复制粘贴:配套源代码.经典书籍,讲解详细. 学习如何分析并改进深度学习模型的表现,通过与标准算法进行比较,借助

分享《TensorFlow深度学习》高清中文版PDF+英文版PDF+源代码

下载:https://pan.baidu.com/s/1Z5xJw4WWbJmJJlF4zvSXlA 更多资料:http://blog.51cto.com/14050756 <TensorFlow深度学习>高清中文版PDF+英文版PDF+源代码高清中文版PDF,245页,带书签目录,文字可以复制粘贴:高清英文版PDF,436页,带书签目录,文字可以复制粘贴:配套源代码.经典书籍,讲解详细. 学习如何分析并改进深度学习模型的表现,通过与标准算法进行比较,借助机器智慧,在特定文本中从信息和决策行为