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中对列表排序实例
Jan 04 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
python3 shelve模块的详解
Jul 08 Python
VSCode下配置python调试运行环境的方法
Apr 06 Python
python 移除字符串尾部的数字方法
Jul 17 Python
django框架CSRF防护原理与用法分析
Jul 22 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python3 selenium自动化测试 强大的CSS定位方法
Aug 23 Python
python 并发下载器实现方法示例
Nov 22 Python
python自动识别文本编码格式代码
Dec 26 Python
python对指定字符串逆序的6种方法(小结)
Apr 02 Python
在Pycharm中安装Pandas库方法(简单易懂)
Feb 20 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投票系统的设计和实现分享
2012/09/23 PHP
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
smarty简单入门实例
2014/11/28 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
onpropertypchange
2006/07/01 Javascript
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript定义函数的方法
2010/12/06 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
图片无缝滚动代码(向左/向下/向上)
2013/04/10 Javascript
轻松创建nodejs服务器(6):作出响应
2014/12/18 NodeJs
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
基于javascript实现页面加载loading效果
2020/09/15 Javascript
WEB前端开发框架Bootstrap3 VS Foundation5
2016/05/16 Javascript
微信小程序 实战小程序实例
2016/10/08 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
jquery.flot.js简单绘制折线图用法示例
2017/03/13 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue-cli扩展多模块打包的示例代码
2018/04/09 Javascript
js中的数组对象排序分析
2018/12/11 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
python实现简易内存监控
2018/06/21 Python
python xpath获取页面注释的方法
2019/01/14 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
CSS3 中filter(滤镜)属性使用详解
2020/04/07 HTML / CSS
施华洛世奇中国官网:SWAROVSKI中国
2020/06/16 全球购物
道德模范先进事迹
2014/02/14 职场文书
材料会计岗位职责
2014/03/06 职场文书
代理协议书范本
2014/04/22 职场文书
中学生的1000字检讨书
2014/10/11 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android