📅  最后修改于: 2023-12-03 15:39:13.348000             🧑  作者: Mango
在图像处理中,有时需要将 RGB 彩色图像转换为灰度图像。OpenCV 提供了 cvtColor
函数来实现此目的。
灰度图像是以黑白为基础的图像,每个像素只有一种亮度值,没有彩色信息。灰度图像的亮度值取决于 RGB 图像中的红色、绿色和蓝色通道的加权平均值。
灰度值的计算公式为:
Gray = (R + G + B) / 3
另外还有一种加权平均值方法:
Gray = 0.299 * R + 0.587 * G + 0.114 * B
在 OpenCV 中,我们可以使用以下方法来将 RGB 图像转换为灰度图像。
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
函数,我们还可以显示灰度图像。