我正在使用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/
为此,我想知道有关一张图片的所有信息。
答案 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 *。有关详细信息,请参阅维基百科中的“实验室颜色空间”。