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 相关文章推荐
用pickle存储Python的原生对象方法
Apr 28 Python
Python实现自动登录百度空间的方法
Jun 10 Python
pandas数据分组和聚合操作方法
Apr 11 Python
使用pycharm生成代码模板的实例
May 23 Python
Python小游戏之300行代码实现俄罗斯方块
Jan 04 Python
pandas取出重复数据的方法
Jul 04 Python
Python实现自定义读写分离代码实例
Nov 16 Python
Python Pillow.Image 图像保存和参数选择方式
Jan 09 Python
基于Python数据结构之递归与回溯搜索
Feb 26 Python
区分python中的进程与线程
Aug 13 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
Python内置的数据类型及使用方法
Apr 13 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
关于Intype一些小问题的解决办法
2008/03/28 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
浅谈Laravel POST,PUT,PATCH 路由的区别
2019/10/15 PHP
JavaScript类库D
2010/10/24 Javascript
js的写法基础分析
2011/01/17 Javascript
javascript全局变量封装模块实现代码
2012/11/28 Javascript
跟我学习javascript的严格模式
2015/11/16 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
详解Nodejs基于mongoose模块的增删改查的操作
2016/12/21 NodeJs
在ABP框架中使用BootstrapTable组件的方法
2017/07/31 Javascript
jQuery插件实现非常实用的tab栏切换功能【案例】
2019/02/18 jQuery
AngularJs中$cookies简单用法分析
2019/05/30 Javascript
[02:51]DOTA2英雄基础教程 风暴之灵
2013/12/23 DOTA
Python splitlines使用技巧
2008/09/06 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Python中捕获键盘的方式详解
2019/03/28 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
Django框架视图介绍与使用详解
2019/07/18 Python
基于python3抓取pinpoint应用信息入库
2020/01/08 Python
Django之富文本(获取内容,设置内容方式)
2020/05/21 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
Html5移动端适配IphoneX等机型的方法
2019/06/25 HTML / CSS
泰国网上购物:Shopee泰国
2018/09/14 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
教师自荐书
2013/10/08 职场文书
绝对经典成功的大学生推荐信
2013/11/08 职场文书
迎国庆演讲稿
2014/09/05 职场文书
社区党建工作汇报材料
2014/10/27 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
2015年学校关工委工作总结
2015/04/03 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python