📜  将 rgb 图像转换为灰度 opnecv (1)

📅  最后修改于: 2023-12-03 15:39:13.348000             🧑  作者: Mango

将 RGB 图像转换为灰度 OpenCV

在图像处理中,有时需要将 RGB 彩色图像转换为灰度图像。OpenCV 提供了 cvtColor 函数来实现此目的。

灰度图像的原理

灰度图像是以黑白为基础的图像,每个像素只有一种亮度值,没有彩色信息。灰度图像的亮度值取决于 RGB 图像中的红色、绿色和蓝色通道的加权平均值。

灰度值的计算公式为:

Gray = (R + G + B) / 3

另外还有一种加权平均值方法:

Gray = 0.299 * R + 0.587 * G + 0.114 * B

在 OpenCV 中,我们可以使用以下方法来将 RGB 图像转换为灰度图像。

OpenCV 中的转换方法
方法一:使用 cvtColor 函数

cvtColor 函数可以将一个图像从一种颜色空间转换为另一种颜色空间。在将 RGB 图像转换为灰度图像时,我们需要将颜色空间从 BGR 转换为灰度空间。

import cv2

# 读取 RGB 图像
img = cv2.imread('lena.jpg')

# 将 RGB 图像转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 显示灰度图像
cv2.imshow('Gray Image', gray_img)

# 等待按下任意按键退出程序
cv2.waitKey(0)

# 释放图像窗口
cv2.destroyAllWindows()
方法二:使用 cv2.imread 中的 IMREAD_GRAYSCALE 标志

cv2.imread 函数可以在读取图像时直接将颜色空间转换为灰度空间。

import cv2

# 读取灰度图像
gray_img = cv2.imread('lena.jpg', cv2.IMREAD_GRAYSCALE)

# 显示灰度图像
cv2.imshow('Gray Image', gray_img)

# 等待按下任意按键退出程序
cv2.waitKey(0)

# 释放图像窗口
cv2.destroyAllWindows()
结论

无论使用哪种方法,我们都可以将 RGB 图像转换为灰度图像。通过 imshow 函数,我们还可以显示灰度图像。