如何使用opencv 2.4 python 2.7和numpy将图像从BGR转换为LAB

时间:2012-11-29 14:57:19

标签: image-processing opencv numpy python-2.7

我正在使用opencv 2.4和numpy。我想打开一个图像并获取有关它的所有信息(8位 - 如果它的RGB-BGR等),并尝试更改颜色空间。 我有这段代码:

if __name__ == '__main__':
    img =  cv2.imread('imL.png') 
    conv= cv2.cvtColor(img, cv2.COLOR_BGR2LAB)
        cv2.imwrite('lab.png', conv )

当我打开文件lab.png时,我会得到不同颜色的图像! 我在http://www.brucelindbloom.com/

中检查BGR到LAB的值

为此,我想知道有关一张图片的所有信息。

2 个答案:

答案 0 :(得分:3)

由于imwrite()以指定的格式(PNG,JPEG 2000和TIFF)单通道或3通道(具有'BGR'通道顺序)保存文件,因此您将获得不同的图像颜色。可以使用此功能保存图像。 imwrite()不知道保存图像的格式LAB,因为它总是期望BGR中的图像。 如果格式,深度或通道顺序不同,请使用Mat :: convertTo()和cvtColor()在保存之前进行转换。

答案 1 :(得分:2)

Lab是另一个颜色空间,就像从cv2.imread()获得的BGR颜色空间一样。就像你将温度从华氏温度转换为摄氏温度一样。 32华氏度和0摄氏度是相同的温度,但在不同的单位。

cv2.imwrite()不知道这些值是否在BGR颜色空间中。当它得到一个3维数组时,它假设它是一个BGR颜色空间,而你的conv变量包含Lab颜色空间。这就是为什么你的图像颜色会改变的原因。

为了您的信息,BGR色彩空间的每一层都包含蓝色,绿色和红色,而Lab的图层分别包含亮度(0-100),a *和b *。有关详细信息,请参阅维基百科中的“实验室颜色空间”。