python使用TensorFlow进行图像处理的方法


Posted in Python onFebruary 28, 2018

一、图片的放大缩小

在使用TensorFlow进行图片的放大缩小时,有三种方式:

1、tf.image.resize_nearest_neighbor():临界点插值
2、tf.image.resize_bilinear():双线性插值
3、tf.image.resize_bicubic():双立方插值算法

下面是示例代码:

# encoding:utf-8
# 使用TensorFlow进行图片的放缩
import tensorflow as tf
import cv2
import numpy as np

# 读取图片
img = cv2.imread("1.jpg")
# 显示原始图片
cv2.imshow("resource", img)

h, w, depth = img.shape
img = np.expand_dims(img, 0)

# 临界点插值
nn_image = tf.image.resize_nearest_neighbor(img, size=[h+100, w+100])
nn_image = tf.squeeze(nn_image)
with tf.Session() as sess:
  # 运行 'init' op
  nn_image = sess.run(nn_image)
nn_image = np.uint8(nn_image)

# 双线性插值
bi_image = tf.image.resize_bilinear(img, size=[h+100, w+100])
bi_image = tf.squeeze(bi_image)
with tf.Session() as sess:
  # 运行 'init' op
  bi_image = sess.run(bi_image)
bi_image = np.uint8(bi_image)

# 双立方插值算法
bic_image = tf.image.resize_bicubic(img, size=[h+100, w+100])
bic_image = tf.squeeze(bic_image)
with tf.Session() as sess:
  # 运行 'init' op
  bic_image = sess.run(bic_image)
bic_image = np.uint8(bic_image)
# 显示结果图片
cv2.imshow("result_nn", nn_image)
cv2.imshow("result_bi", bi_image)
cv2.imshow("result_bic", bic_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

二、图片的亮度调整

在使用TensorFlow进行图片的亮度调整时,有两种方式:
1、tf.image.adjust_brightness():亮度的全局调整
2、tf.image.random_brightness():亮度的随机调整

下面是示例代码:

# encoding:utf-8
# 使用TensorFlow调整图片的亮度
import tensorflow as tf
import cv2
import numpy as np

# 读取图片
img = cv2.imread("1.jpg")
# 显示原始图片
cv2.imshow("resource", img)

img = np.expand_dims(img, 0)
# adjust_brightness
bright_img = tf.image.adjust_brightness(img, delta=.5)
bright_img = tf.squeeze(bright_img)
with tf.Session() as sess:
  # 运行 'init' op
  result = sess.run(bright_img)
result = np.uint8(result)

rand_image = tf.image.random_brightness(img, max_delta=.5)
rand_image = tf.squeeze(rand_image)
with tf.Session() as sess:
  # 运行 'init' op
  result2 = sess.run(rand_image)
result2 = np.uint8(result2)

cv2.imshow("result", result)
cv2.imshow("result2", result2)
cv2.waitKey(0)
cv2.destroyAllWindows()

三、图片的对比度调整

在使用TensorFlow进行图片的对比度调整时,有两种方式:
1、tf.image.adjust_contrast():对比度的全局调整
2、tf.image.random_contrast():对比度的随机调整

代码与图片的亮度调整类似,这里就不赘述了。

四、图片的饱和度调整

在使用TensorFlow进行图片的饱和度调整时,使用下列函数:

tf.image.adjust_saturation()

饱和度调整范围为0~5

下面示例代码:

# encoding:utf-8
# 使用TensorFlow调整图片的亮度
import tensorflow as tf
import cv2
import numpy as np

# 读取图片
img = cv2.imread("1.jpg")
# 显示原始图片
cv2.imshow("resource", img)

# 图像的饱和度调整
stand_img = tf.image.adjust_saturation(img, saturation_factor=2.4)
with tf.Session() as sess:
  # 运行 'init' op
  result = sess.run(stand_img)
result = np.uint8(result)

cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

五、图片的标准化

在使用TensorFlow对图像数据进行训练之前,常需要执行图像的标准化操作,它与归一化是有区别的,归一化不改变图像的直方图,标准化操作会改变图像的直方图。标准化操作使用如下函数:

tf.image.per_image_standardization()

下面是示例代码:

# encoding:utf-8
# 使用TensorFlow调整图片的亮度
import tensorflow as tf
import cv2
import numpy as np

# 读取图片
img = cv2.imread("1.jpg")
# 显示原始图片
cv2.imshow("resource", img)

# 图像标准化操作
stand_img = tf.image.per_image_standardization(img)
with tf.Session() as sess:
  # 运行 'init' op
  result = sess.run(stand_img)
result = np.uint8(result)

cv2.imshow("result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

六、图像的色彩空间转化

使用TensorFlow进行图像的色彩空间转化,包括HSV、RGB、灰度色彩空间之间的转化,使用的函数如下所示:

tf.image.rgb_ to_hsv() 
tf.image.rgb_ to_grayscale() 
tf.image.hsv_ to_rgb()

代码与图像的标准化操作的代码相似,这里不再赘述。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
Nov 06 Python
Python实现从订阅源下载图片的方法
Mar 11 Python
Python设置默认编码为utf8的方法
Jul 01 Python
python绘制双柱形图代码实例
Dec 14 Python
Python将多份excel表格整理成一份表格
Jan 03 Python
python 遍历目录(包括子目录)下所有文件的实例
Jul 11 Python
Python用字典构建多级菜单功能
Jul 11 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
Python连接Impala实现步骤解析
Aug 04 Python
PyCharm 2020.2 安装详细教程
Sep 25 Python
Python基础进阶之海量表情包多线程爬虫功能的实现
Dec 17 Python
使用Python搭建虚拟环境的配置方法
Feb 28 #Python
Python OpenCV获取视频的方法
Feb 28 #Python
python实现多线程行情抓取工具的方法
Feb 28 #Python
Python 记录日志的灵活性和可配置性介绍
Feb 27 #Python
python定向爬取淘宝商品价格
Feb 27 #Python
python抓取文件夹的所有文件
Feb 27 #Python
python数据分析数据标准化及离散化详解
Feb 26 #Python
You might like
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
vBulletin Forum 2.3.xx SQL Injection
2006/10/09 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
php画图实例
2014/11/05 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
PHP扩展模块memcached长连接使用方法分析
2014/12/24 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
JavaScript 基础问答三
2008/12/03 Javascript
CSS+Jquery实现页面圆角框方法大全
2009/12/24 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
javascript函数声明和函数表达式区别分析
2014/12/02 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
2015/08/31 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
vue-cli 构建骨架屏的方法示例
2018/11/08 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
通过C++学习Python
2015/01/20 Python
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
在python中使用xlrd获取合并单元格的方法
2018/12/26 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python中property属性的介绍及其应用详解
2019/08/29 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
python tornado修改log输出方式
2019/11/18 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
Python json格式化打印实现过程解析
2020/07/21 Python
Python timeit模块原理及使用方法
2020/10/10 Python
令人啧啧称赞的经理推荐信
2013/11/07 职场文书
八一演出活动方案
2014/02/03 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
元旦主持词开场白
2015/05/29 职场文书
2015高中教师个人工作总结
2015/07/21 职场文书