[英]Check if a pixel (RGB or HSV) is contained in a color scale range, how
我需要檢查從極淺粉紅色到深紫色的色階中是否包含像素(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顏色空間中指定軸對齊的矩形框。 盒子的形狀很討厭-您可能必須包括一些您確實不想要的區域(在角落),以避免排除您確實想要的區域(在臉部中央)。
如果您改為選擇兩個錨點和一個截止距離,則它等效於任意對齊的3d橢圓形-希望它可以更准確地匹配您想要的顏色。
就像是
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:
如果您以復雜的方式定義“顏色范圍”,那么定義一組具體的顏色可能是唯一的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.