abi*_*bol 4 python opencv colors spyder cielab
在下面的代码中,我使用一个 4096*4096 像素的 png 图像,其中包括所有可能的 RGB 颜色(不是相同像素的两倍,可以在此处找到http://allrgb.com/starry-night)然后我将 RGB 值转换为LAB 值,我检查每个通道的范围
import cv2 as cv
import numpy as np
im=cv.imread('allrgb.png')
im=im.astype(np.uint8)
colors_lab=cv.cvtColor(im,cv.COLOR_BGR2LAB)
m=np.amin(colors_lab[...,...,0])
Run Code Online (Sandbox Code Playgroud)
结果如下:
如果原始图像的类型为 uint8,则 R[0,255],G[0,255],B[0,255] 给出 L[0,255],A[42,226],B[20,223]
如果原始图像的类型为 float32,则 R[0,1],G[0,1],B[0,1] 给出 L[0,100],A[-86.1813,98.2351],B[-107.862,94.4758]
无论如何,实验室范围从来都不是预期的范围,这是由开放的简历文档给出的
知道如何解释吗?
OpenCV 返回的 LAB 值绝不会超出范围 0 \xe2\x89\xa4 L \xe2\x89\xa4 100, -127 \xe2\x89\xa4 a \xe2\x89\xa4 127, -127 \xe2\ x89\xa4 b \xe2\x89\xa4 127 转换浮点图像时(OpenCV 颜色转换)。转换8位图像时,L的范围乘以255/100,a和b得到128的偏移量来填充8位范围。
\n\n但无论图像数据类型如何: LAB 颜色空间的色域都超过了 RGB 颜色空间的色域,例如参见维基百科关于LAB的文章中的第二段。
\n\n因此,当您从 RGB/BGR 转换为 LAB 时,您将永远无法获得完整的 LAB 范围,因为 LAB 包含无法用 RGB 表示的颜色。
\n| 归档时间: |
|
| 查看次数: |
8214 次 |
| 最近记录: |