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实现快速排序和插入排序算法及自定义排序的示例
Feb 16 Python
Python 字典与字符串的互转实例
Jan 13 Python
python的re正则表达式实例代码
Jan 24 Python
深入flask之异步非堵塞实现代码示例
Jul 31 Python
Python调用服务接口的实例
Jan 03 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
python 利用pyttsx3文字转语音过程详解
Sep 25 Python
python银行系统实现源码
Oct 25 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
Python包和模块的分发详细介绍
Jun 19 Python
PyCharm2019 安装和配置教程详解附激活码
Jul 31 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 PDO函数库详解
2010/04/27 PHP
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
一个PHP验证码类代码分享(已封装成类)
2011/07/17 PHP
解决PHP超大文件下载,断点续传下载的方法详解
2013/06/06 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
php实现微信发红包功能
2018/07/13 PHP
5秒后跳转到另一个页面的js代码
2013/10/12 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
2016/03/08 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
详解js中==与===的区别
2017/01/08 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
vue.js使用v-model实现表单元素(input) 双向数据绑定功能示例
2019/03/08 Javascript
JS实现“全选”和"全不选"功能代码实例
2020/02/06 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
Python入门篇之正则表达式
2014/10/20 Python
python使用range函数计算一组数和的方法
2015/05/07 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
Python处理JSON时的值报错及编码报错的两则解决实录
2016/06/26 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
python基础之包的导入和__init__.py的介绍
2018/01/08 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
python编写计算器功能
2019/10/25 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python 实现关联规则算法Apriori的示例
2020/09/30 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
一款利用html5和css3实现的3D立方体旋转效果教程
2016/04/26 HTML / CSS
html5构建触屏网站之touch事件介绍
2013/01/07 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
技校生自我鉴定范文
2013/09/26 职场文书
运动会广播稿500字
2014/01/28 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript