Python3实现图片读取与灰度化的四种主流方法详解

雨后青山
雨后青山
发布时间:2026-10-13 | 3人浏览过
原创

本文总结了Python3中读取图片并转换为灰度图的四种常用方法,包括OpenCV直接读取、OpenCV转换、PIL.Image模块以及TensorFlow处理。通过代码示例和运行结果对比,分析了各方法在实现细节和输出结果上的差异,建议在实际项目中保持处理链路的一致性以避免潜在Bug。

Python3图片灰度化方法概述

在图像处理的日常工作中,读取图像并将其转换为灰度图是基础且高频的操作。本文旨在为初学者梳理并记录四种实现该功能的具体技术路径。

环境依赖与库导入

首先,需要导入必要的依赖库,代码如下:


import numpy as np
import cv2
import tensorflow as tf
from PIL import Image

方法一:OpenCV直接读取灰度图

第一种方法:利用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)

该方法的运行结果如下图所示:

方法二:OpenCV分步转换

第二种方法:同样使用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)

该方法的运行结果如下:


方法三:PIL Image模块处理

第三种方法:调用Python标准图像处理库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)

该方法的运行结果如下:


如需深入了解PIL库中Image模块convert()函数的具体用法,可参考相关技术博客:https://www.jb51.net/kf/201603/492898.html

方法四:TensorFlow框架处理

第四种方法:采用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)

该方法的运行结果如下:



结果对比与最佳实践建议

对比可见,TensorFlow方法生成的灰度图结果与前三种方法存在细微差异。因此,在图像处理的完整链路中,建议保持所用技术栈的一致性,避免混用不同库读取和处理同一图像,从而防止因算法差异引入不必要的Bug或影响最终处理效果。

以上内容为本文的全部总结,希望能为读者的学习与工作提供有益参考,同时也欢迎继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表