检查色阶范围内是否包含像素(RGB或HSV),如何

我需要检查一个像素(RGB)是否包含在从浅粉红色到深紫色的色标范围内。 使用RGB方案我可以像这样检查:
IF image [x, y] [R]> threshold and image [x, y] [G]> threshold image [x, y] [B]> threshold and 
     image [x, y] [R] <threshold and image [x, y] [G] < threshold image [x, y] [B] <threshold THAN ...
? 如果没有,我也可以选择在HSV中使用像素。 谢谢!     
已邀请:
您可能希望在HSV中工作,因为它比RGB更直观地映射到人类感知。如果你让一个人将颜色标记为“在范围内”或“超出范围”,并将它们映射到HSV中,你将能够找到指示进出的H,S和V值的界限。 然后,您可以使用一个简单的范围检查,就像您已经概述的那样,确定是否有颜色。如果您需要Python帮助进行色彩空间转换,标准库模块
colorsys
将为您完成。     
使用每通道截止值相当于在RGB颜色空间中指定轴对齐的矩形框。盒子是一种令人讨厌的形状 - 你可能不得不包括一些你并不真正想要的区域(在角落里),以避免排除你想要的区域(在面部的中心)。 如果你改为选择两个锚点和一个截止距离,它相当于一个任意对齐的三维椭球 - 它应该更准确地匹配你想要的颜色。 就像是
def colorRange(ax, ay, az, bx, by, bz, dist):
    def testPixel(cx, cy, cz):
        return (
            (cx-ax)**2 + (cy-ay)**2 + (cz-az)**2
            + (cx-bx)**2 + (cy-by)**2 + (cz-bz)**2
        ) < dist**2
    return testPixel

isPurple = colorRange(140,0,140, 255,75,255, 230)
isPurple(203,46,195)  # -> True
    
如果你在谈论整数RGB值,你可以把所有的值都放到
set
然后简单地做
if color in set:
如果以复杂的方式定义“颜色范围”,则定义一组具体的颜色可能是唯一的方法。     

要回复问题请先登录注册