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

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

本文总结了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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。