1

我正在使用 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我得到不同颜色的图像!我在以下位置检查 BGR 对 LAB 的值:http ://www.brucelindbloom.com/

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

4

2 回答 2

3

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

于 2012-11-30T13:18:46.280 回答
2

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

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

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

于 2012-12-03T15:19:02.803 回答