转换原理
在opencv中,可以使用cv2.cvtColor函数将rgb图像转换为gray图像。示例代码如下,
import cv2
img_path = "image.jpg"
image = cv2.imread(img_path)
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
mean = gray_image.mean()
print("OpenCV Gray Mean:", mean)
转换的原理是使用加权平均法,每个通道的值乘以一个特定的权重,然后将它们相加以得到灰度值。公式如下:
灰度值 = 0.2989 * R + 0.5870 * G + 0.1140 * B
在这个公式中,R、G、B分别代表红色、绿色和蓝色通道的像素值,而0.2989、0.5870、0.1140是对应的权重(基于国际电工委员会(CIE)制定的标准)。这些权重的选择是基于人眼对不同颜色的敏感度,因为人眼对绿色最敏感,其次是红色,最不敏感的是蓝色。示例代码如下,
import cv2
img_path = "image.jpg"
image = cv2.imread(img_path)
gray_image = 0.2989 * image[:,:,2] + 0.5870 * image[:,:,1] + 0.1140 * image[:,:,0]
mean = gray_image.mean()
print("Custom Gray Mean:", mean)
结果展示
使用以上示例代码对下图进行转换,得到的结果如下,
OpenCV Gray Mean: 165.75651861702127
Custom Gray Mean: 165.73745658294064