Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用skimage.color.rgb2lab将RGB转换为实验室_Python_Image Processing_Colors_Scipy_Scikit Image - Fatal编程技术网

Python 使用skimage.color.rgb2lab将RGB转换为实验室

Python 使用skimage.color.rgb2lab将RGB转换为实验室,python,image-processing,colors,scipy,scikit-image,Python,Image Processing,Colors,Scipy,Scikit Image,在将RGB像素值转换为实验室空间时,我有一个奇怪的观察结果 让我们采用RGB中的以下参考值 import skimage colors = {'red': np.array((255, 0, 0)), 'orange': np.array((255, 69, 0)), 'yellow': np.array((255, 255, 0)), 'green': np.array((0, 128, 0)), 'blue': np.array((0, 0, 25

在将RGB像素值转换为实验室空间时,我有一个奇怪的观察结果

让我们采用RGB中的以下参考值

import skimage
colors = {'red': np.array((255, 0, 0)), 'orange': np.array((255, 69, 0)),
           'yellow': np.array((255, 255, 0)), 'green': np.array((0, 128, 0)),
           'blue': np.array((0, 0, 255)), 'white': np.array((255, 255, 255)), 
           'black': np.array((0, 0, 0)), 'brown': np.array((139, 69, 19)), 
           'gray': np.array((128, 128, 128))}
现在我使用
skimage.color.rgb2lab
将它们转换为实验室颜色空间:

colors_lab = {key: skimage.color.rgb2lab(np.array(np.ones((1, 1, 3)) * value, dtype=int)) for (key, value) in colors.items()}
print(colors_lab)

"""
{'red': array([[[0., 0., 0.]]]),
 'orange': array([[[0., 0., 0.]]]),
 'yellow': array([[[ 3.55271368e-15, 1.38777878e-14,  5.55111512e-15]]]),
 'green': array([[[0., 0., 0.]]]),
 'blue': array([[[ 0.00000000e+00, 0.00000000e+00, -5.55111512e-15]]]),
 'white': array([[[3.55271368e-15, 0.00000000e+00, 0.00000000e+00]]]),
 'black': array([[[0., 0., 0.]]]),
 'brown': array([[[0., 0., 0.]]]),
 'gray': array([[[0., 0., 0.]]])}
"""
我想我遗漏了什么。红色、橙色、绿色、黑色、棕色和灰色不应具有相同的值
[0,0,0]

我错过了什么


答复: 正如@MarkSetchell所建议的,该函数期望RGB数组的元素范围为0到1。(文件中未提及)即



你的
dtype=int
把你搞砸了。试试
skimage.color.rgb2lab(np.ones((1,1,3))*[0,0255])
@MarkSetchell我试过了。IIRC它返回了一个数组,该数组包含数千个元素(远远超出了实验室空间的范围),因此我猜该函数需要
int
。让我把它添加到问题中。好的,尝试将RGB扩展到范围0..1,即
skimage.color.rgb2lab(np.ones((1,1,3))*[0,0,1.0])
蓝色。是的,我们正在努力避免过度依赖数据类型来了解范围,但不幸的是有时需要它。任何关于一个好地方的建议都是受欢迎的,它不需要在整个代码库中添加指向本文档的链接。请加入我们的Zulip聊天或邮件列表,或者提交一个GitHub问题,只要对您最方便。@AhmadMoussa我想这与
dtype
有关,如果您的数组。IIRC,文档中提到了数据类型的重要性。
colors_lab = {key: skimage.color.rgb2lab(np.array(np.ones((1, 1, 3)) * value/255)) for (key, value) in colors.items()}
print(colors_lab)

"""
{'black': array([[[0., 0., 0.]]]),
'blue': array([[[  32.29567257,   79.18559091, -107.85730021]]]),
'brown': array([[[37.46978642, 26.44214425, 40.98418759]]]),
'gray': array([[[ 5.35850135e+01, -1.47264555e-03,  2.79145150e-03]]]),
'green': array([[[ 46.2276577 , -51.69868348,  49.89707556]]]),
'orange': array([[[57.58158901, 67.7824008 , 68.95825825]]]),
'red': array([[[53.24058794, 80.09230823, 67.20275104]]]),
'white': array([[[ 1.00000000e+02, -2.45493786e-03,  4.65342115e-03]]]),
 'yellow': array([[[ 97.13950704, -21.55468102,  94.47812228]]])}"""