python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结


Posted in Python onJuly 04, 2019

在处理图像的时候经常是读取图片以后把图片转换为灰度图。作为一个刚入坑的小白,我在这篇博客记录了四种处理的方法。

首先导入包:

import numpy as np
import cv2
import tensorflow as tf
from PIL import Image

方法一:在使用OpenCV读取图片的同时将图片转换为灰度图:

img = cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)
  print("cv2.imread(imgfile, cv2.IMREAD_GRAYSCALE)结果如下:")
  print('大小:{}'.format(img.shape))
  print("类型:%s"%type(img))
  print(img)

运行结果如下图所示:

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

方法二:使用OpenCV,先读取图片,然后在转换为灰度图:

img = cv2.imread(imgfile)
  #print(img.shape)
  #print(img)
  gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Y = 0.299R + 0.587G + 0.114B
  print("cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)结果如下:")
  print('大小:{}'.format(gray_img.shape))
  print("类型:%s" % type(gray_img))
  print(gray_img)

运行结果如下:

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

方法三:使用PIL库中的Image模块

img = np.array(Image.open(imgfile).convert('L'), 'f') #读取图片,灰度化,转换为数组,L = 0.299R + 0.587G + 0.114B。'f'为float类型
  print("Image方法的结果如下:")
  print('大小:{}'.format(img.shape))
  print("类型:%s" % type(img))
  print(img)

运行结果如下:

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

更多关于使用PIL库中的Image模块的convert()函数的知识请参考博客:https://3water.com/kf/201603/492898.html

方法四:TensorFlow方法:

with tf.Session() as sess:
    img = tf.read_file(imgfile) #读取图片,
    img_data = tf.image.decode_jpeg(img, channels=3) #解码
    #img_data = sess.run(tf.image.decode_jpeg(img, channels=3))
    img_data = sess.run(tf.image.rgb_to_grayscale(img_data)) #灰度化
    print('大小:{}'.format(img_data.shape))
    print("类型:%s" % type(img_data))
    print(img_data)

运行结果如下:

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

python3读取图片并灰度化图片的四种方法(OpenCV、PIL.Image、TensorFlow方法)总结

可以看出:TensorFlow的方法的结果与上面的三种方法的处理结果略有不同。所以在处理图像的时候最好保持方法的一致性,最好不要用这种方法读取完图片然后用另一种方法处理图片,以避免不必要的bug影响图片处理处理结果。

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

Python 相关文章推荐
跟老齐学Python之正规地说一句话
Sep 28 Python
详解Python的Django框架中的中间件
Jul 24 Python
深入解读Python解析XML的几种方式
Feb 16 Python
使用Python操作excel文件的实例代码
Oct 15 Python
速记Python布尔值
Nov 09 Python
python使用pycharm环境调用opencv库
Feb 11 Python
Python实现类似比特币的加密货币区块链的创建与交易实例
Mar 20 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
python2与python3爬虫中get与post对比解析
Sep 18 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
浅谈Python中文件夹和python package包的区别
Jun 01 Python
pybind11和numpy进行交互的方法
Jul 04 #Python
pandas计算最大连续间隔的方法
Jul 04 #Python
python SQLAlchemy 中的Engine详解
Jul 04 #Python
Python Pandas实现数据分组求平均值并填充nan的示例
Jul 04 #Python
pybind11在Windows下的使用教程
Jul 04 #Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 #Python
Pycharm简单使用教程(入门小结)
Jul 04 #Python
You might like
超级简单的php+mysql留言本源码
2009/11/11 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
ThinkPHP安装和设置
2015/07/27 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
js cookies实现简单统计访问次数
2009/11/24 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
深入浅析JavaScript中的作用域和上下文
2016/03/26 Javascript
Node.js中Request模块处理HTTP协议请求的基本使用教程
2016/03/31 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
浅谈Angular HttpClient简单入门
2018/05/04 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
小程序实现人脸识别功能(百度ai)
2018/12/23 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
vue列表单项展开收缩功能之this.$refs的详解
2019/05/05 Javascript
Vue 用Vant实现时间选择器的示例代码
2019/10/25 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
Python中optionParser模块的使用方法实例教程
2014/08/29 Python
Python转换HTML到Text纯文本的方法
2015/01/15 Python
Python get获取页面cookie代码实例
2018/09/12 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
python NumPy ndarray二维数组 按照行列求平均实例
2019/11/26 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
国际贸易专业个人求职信范文分享
2013/12/14 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
企业承诺书格式
2014/05/21 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
python绘图subplots函数使用模板的示例代码
2021/04/30 Python
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技