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读取浮点数和读取文本文件示例
May 06 Python
python实现将元祖转换成数组的方法
May 04 Python
在Python中移动目录结构的方法
Jan 31 Python
浅谈django中的认证与登录
Oct 31 Python
Python 模拟员工信息数据库操作的实例
Oct 23 Python
python中多个装饰器的执行顺序详解
Oct 08 Python
python实现K近邻回归,采用等权重和不等权重的方法
Jan 23 Python
Django组件cookie与session的具体使用
Jun 05 Python
python命名空间(namespace)简单介绍
Aug 10 Python
pytorch 利用lstm做mnist手写数字识别分类的实例
Jan 10 Python
python字符串替换re.sub()实例解析
Feb 09 Python
将python文件打包exe独立运行程序方法详解
Feb 12 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调用Oracle存储过程的方法
2008/09/12 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
PHP PDOStatement::setFetchMode讲解
2019/02/03 PHP
laravel执行php artisan migrate报错的解决方法
2019/10/09 PHP
JavaScript中令你抓狂的魔术变量
2006/11/30 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
浅谈MVC+EF easyui dataGrid 动态加载分页表格
2016/11/10 Javascript
jQuery实现在新增加的元素上添加事件方法案例分析
2017/02/09 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
2017/02/23 Javascript
js实现登录框鼠标拖拽效果
2017/03/09 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
vue中使用cookies和crypto-js实现记住密码和加密的方法
2018/10/18 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
vue发送websocket请求和http post请求的实例代码
2019/07/11 Javascript
[54:18]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第一场 1月22日
2021/03/11 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
python 使用csv模块读写csv格式文件的示例
2020/12/02 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
物流仓管员岗位职责
2013/12/04 职场文书
校长就职演讲稿
2014/01/06 职场文书
上海世博会口号
2014/06/19 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
4S店客服专员岗位职责
2015/04/07 职场文书
2015年共青团工作总结
2015/05/15 职场文书
院系推荐意见
2015/06/05 职场文书
2015暑假假期总结
2015/07/13 职场文书
新娘婚礼致辞
2015/07/27 职场文书
教师研修随笔感言
2015/11/18 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis