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 实现简单的电话本功能
Aug 09 Python
itchat和matplotlib的结合使用爬取微信信息的实例
Aug 25 Python
python调用OpenCV实现人脸识别功能
May 25 Python
python修改字典键(key)的方法
Aug 05 Python
浅谈Python3 numpy.ptp()最大值与最小值的差
Aug 24 Python
浅谈python已知元素,获取元素索引(numpy,pandas)
Nov 26 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
python文件和文件夹复制函数
Feb 07 Python
Python cookie的保存与读取、SSL讲解
Feb 17 Python
Django使用Profile扩展User模块方式
May 14 Python
python开发一个解析protobuf文件的简单编译器
Nov 17 Python
pycharm 的Structure界面设置操作
Feb 05 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
Yii2 ActiveRecord多表关联及多表关联搜索的实现
2016/06/30 PHP
NodeJS学习笔记之Connect中间件应用实例
2015/01/27 NodeJs
jQuery中prepend()方法使用详解
2015/08/11 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
2015/11/09 Javascript
jQuery实现日期联动效果实例
2016/07/26 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
JS中BOM相关知识点总结(必看篇)
2016/11/22 Javascript
js实现的在线调色板功能完整实例
2016/12/21 Javascript
JSON创建键值对(key是中文或者数字)方式详解
2017/08/24 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
小程序click-scroll组件设计
2019/06/18 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
Vue利用localStorage本地缓存使页面刷新验证码不清零功能的实现
2020/09/04 Javascript
Python中的生成器和yield详细介绍
2015/01/09 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
在Python中操作时间之mktime()方法的使用教程
2015/05/22 Python
Python中使用Queue和Condition进行线程同步的方法
2016/01/19 Python
深入理解python try异常处理机制
2016/06/01 Python
python下调用pytesseract识别某网站验证码的实现方法
2016/06/06 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
python读取图片任意范围区域
2019/01/23 Python
分析经典Python开发工程师面试题
2019/04/08 Python
对Python中TKinter模块中的Label组件实例详解
2019/06/14 Python
python实现文件的备份流程详解
2019/06/18 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
如何在Python 游戏中模拟引力
2020/03/27 Python
如何基于线程池提升request模块效率
2020/04/18 Python
大学生的自我鉴定范文
2014/01/21 职场文书
西门豹教学反思
2014/02/04 职场文书
2014年党员干部四风问题自我剖析材料
2014/09/29 职场文书
2015年感恩母亲节的演讲稿
2015/03/18 职场文书
Python访问Redis的详细操作
2021/06/26 Python