簡體   English   中英

檢查色標范圍內是否包含像素(RGB或HSV),如何

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM