1

非常に薄いピンクから濃い紫までの範囲のカラー スケールにピクセル (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 にするオプションも利用できます。

ありがとう!

4

3 に答える 3

3

チャネルごとのカットオフ値を使用することは、RGB 色空間で軸に沿った長方形のボックスを指定することと同じです。ボックスは厄介な形状のようなものです - 必要な領域 (面の中心) を除外しないようにするために、実際には必要のない領域 (コーナー) を含める必要がある可能性があります。

代わりに 2 つのアンカー ポイントとカットオフ距離を選択すると、任意に配置された 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
于 2011-03-01T21:45:56.883 に答える
3

HSV は、RGB よりもはるかに直感的に人間の知覚にマッピングされるため、おそらく HSV で作業することをお勧めします。人間に色を「範囲内」または「範囲外」としてマークしてもらい、それらを HSV でマッピングすると、内外を示す H、S、および V 値の境界を見つけることができます。

次に、概要を説明したような単純な範囲チェックを使用して、色がインかアウトかを判断できます。色空間の変換で Python のヘルプが必要な場合は、標準ライブラリ モジュールcolorsysがそれを行います。

于 2011-03-01T19:46:47.240 に答える
0

整数のRGB値について話している場合は、すべての値をaに入れてから、次のようにすることができますsetif color in set:

「色の範囲」が複雑な方法で定義されている場合は、具体的な色のセットを定義することが唯一の方法である可能性があります。

于 2011-03-01T19:49:04.327 に答える