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 urllib模块urlopen()与urlretrieve()详解
Nov 01 Python
最基础的Python的socket编程入门教程
Apr 23 Python
Python 3.x 新特性及10大变化
Jun 12 Python
Python3 模块、包调用&路径详解
Oct 25 Python
python多环境切换及pyenv使用过程详解
Sep 27 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
tensorflow 初始化未初始化的变量实例
Feb 06 Python
Python的历史与优缺点整理
May 26 Python
django创建css文件夹的具体方法
Jul 31 Python
Django如何实现密码错误报错提醒
Sep 04 Python
详解vscode实现远程linux服务器上Python开发
Nov 10 Python
Python字符串的15个基本操作(小结)
Feb 03 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实现ping
2006/10/09 PHP
PHP脚本的10个技巧(7)
2006/10/09 PHP
PHP中for循环语句的几种变型
2007/03/16 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
php利用腾讯ip分享计划获取地理位置示例分享
2014/01/20 PHP
php开启openssl的方法
2014/05/15 PHP
php使用memcoder将视频转成mp4格式的方法
2015/03/12 PHP
PHP之十六个魔术方法详细介绍
2016/11/01 PHP
跟着Jquery API学Jquery之一 选择器
2010/04/07 Javascript
innerText 使用示例
2014/01/23 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
angularjs封装bootstrap时间插件datetimepicker
2016/06/20 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
对layer弹出框中icon数字参数的说明介绍
2019/09/04 Javascript
layui将table转化表单显示的方法(即table.render转为表单展示)
2019/09/24 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
JS highcharts实现动态曲线代码示例
2020/10/16 Javascript
动态实现element ui的el-table某列数据不同样式的示例
2021/01/22 Javascript
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
python 图片去噪的方法示例
2019/07/09 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
python文件编写好后如何实践
2020/07/07 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
广州足迹信息技术有限公司Java软件工程师试题
2014/02/15 面试题
工商管理专业学生的自我评价
2013/10/01 职场文书
小学语文教研活动总结
2014/07/01 职场文书
认真学习保证书
2015/02/26 职场文书
2015年度班主任自我评价
2015/03/11 职场文书
奖励通知
2015/04/22 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
使用Django实现商城验证码模块的方法
2021/06/01 Python
小程序实现侧滑删除功能
2022/06/25 Javascript