Python OpenCV图片转灰度图的两种实现方式
本文介绍使用Python Open库将彩色图像转换为灰度图的两种常用方法。第一种是通过cv2.cvtColor函数对已读取的彩色图进行通道转换;第二种是在cv2.imread读取图像时直接指定IMREAD_GRAYSCALE参数。文章包含完整代码示例及输出形状对比,帮助开发者快速掌握OpenCV图像处理基础。
OpenCV灰度转换概述
在Python中使用OpenCV库处理图像时,将彩色图片转换为灰度图通常有两种主要实现路径,第一种是将彩色图转为灰度图,第二种是在使用OpenCV读取图片的时候直接读取为灰度图。
方法一:转换彩色图像
方法一:先读取彩色图再转换
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#获取图片的宽和高
width,height = img.shape[:2][::-1]
#将图片缩小便于显示观看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#将图片转为灰度图
img_gray = cv2.cvtColor(img_resize,cv2.COLOR_RGB2GRAY)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3) img_gray shape:(337, 600)
OpenCV在默认情况下使用BGR色彩空间读取图像,因此初始读取的图像数据包含3个通道。经过上述转换处理后,图像数据变为单通道,即灰度图。

方法二:直接读取灰度图像
方法二:读取时直接指定灰度模式
import cv2
import numpy as np
if __name__ == "__main__":
img_path = "timg.jpg"
img = cv2.imread(img_path)
#获取图片的宽和高
width,height = img.shape[:2][::-1]
#将图片缩小便于显示观看
img_resize = cv2.resize(img,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img",img_resize)
print("img_reisze shape:{}".format(np.shape(img_resize)))
#读取灰度图
img_gray = cv2.imread(img_path,cv2.IMREAD_GRAYSCALE)
#将图片缩小便于显示观看
img_gray = cv2.resize(img_gray,
(int(width*0.5),int(height*0.5)),interpolation=cv2.INTER_CUBIC)
cv2.imshow("img_gray",img_gray)
print("img_gray shape:{}".format(np.shape(img_gray)))
cv2.waitKey()
img_reisze shape:(337, 600, 3) img_gray shape:(337, 600)

以上即为利用OpenCV实现图片灰度转换的核心内容,希望能为相关学习提供实用参考。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













