Python中类似的颜色检测

问题描述 投票:2回答:1

给定RGB或Hex颜色,我如何找到与它相似的颜色?类似的我的意思是它们应该用小值来区分。

python colors rgb scikit-image cielab
1个回答
4
投票

RGB颜色空间取决于设备,并且在感知上不均匀。如果您打算测量颜色相似性,则应首先将RGB值转换为与设备无关且在感知上更均匀的颜色空间,例如CIELAB。然后,您可以通过适当的相似性度量来测量颜色差异,例如Lab Delta E

Demo

考虑this image

original image

让我们假设您的参考颜色是绿色阴影和洋红色阴影,其RGB值例如是[0, 160, 0][120, 0, 140]。以下片段标识那些相对于参考颜色的Delta E低于某个阈值(分别为1520)的图像像素。

import numpy as np
from skimage import io
from skimage.color import rgb2lab, deltaE_cie76

rgb = io.imread('https://i.stack.imgur.com/npnrv.png')
lab = rgb2lab(rgb)

green = [0, 160, 0]
magenta = [120, 0, 140]

threshold_green = 15    
threshold_magenta = 20    

green_3d = np.uint8(np.asarray([[green]]))
magenta_3d = np.uint8(np.asarray([[magenta]]))

dE_green = deltaE_cie76(rgb2lab(green_3d), lab)
dE_magenta = deltaE_cie76(rgb2lab(magenta_3d), lab)

rgb[dE_green < threshold_green] = green_3d
rgb[dE_magenta < threshold_magenta] = magenta_3d
io.imshow(rgb)

similar colors detected

© www.soinside.com 2019 - 2024. All rights reserved.