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中SOAP项目的介绍及其在web开发中的应用
Apr 14 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Python 专题二 条件语句和循环语句的基础知识
Mar 19 Python
利用标准库fractions模块让Python支持分数类型的方法详解
Aug 11 Python
python和flask中返回JSON数据的方法
Mar 26 Python
详谈python中冒号与逗号的区别
Apr 18 Python
python实现一个猜拳游戏
Apr 05 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Python操作MySQL数据库的示例代码
Jul 13 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python JSON常用编解码方法代码实例
Sep 05 Python
python openssl模块安装及用法
Dec 06 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数据库的简单实例
2013/08/26 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
js中将具有数字属性名的对象转换为数组
2011/03/06 Javascript
30个让人兴奋的视差滚动(Parallax Scrolling)效果网站
2012/03/04 Javascript
javascript级联下拉列表实例代码(自写)
2013/05/10 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
一个css与js结合的下拉菜单支持主流浏览器
2014/10/08 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
2015/03/25 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
JS加密插件CryptoJS实现的Base64加密示例
2020/08/16 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
防止Layui form表单重复提交的实现方法
2019/09/10 Javascript
OpenLayers3实现地图鹰眼以及地图比例尺的添加
2020/09/25 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[38:39]KG vs Mineski 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python编程中用close()方法关闭文件的教程
2015/05/24 Python
简单易懂的python环境安装教程
2017/07/13 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
关于python中密码加盐的学习体会小结
2019/07/15 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
40行Python代码实现天气预报和每日鸡汤推送功能
2020/02/27 Python
python实现手势识别的示例(入门)
2020/04/15 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
联想瑞士官方网站:Lenovo Switzerland
2017/11/19 全球购物
学术会议邀请函范文
2014/01/22 职场文书
战友聚会策划方案
2014/06/13 职场文书
幼儿园户外活动总结
2014/07/04 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
关于MySQL中的 like操作符详情
2021/11/17 MySQL
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
我收到了德劲DE1107
2022/04/05 无线电
JavaScript前端面试组合函数
2022/06/21 Javascript