iOS の CVPixelBufferRef から「最も発生する」色をどのように見つけることができるのか疑問に思っています。これは、必ずしもコード サンプルを意味するわけではなく、その背後にあるテクノロジを意味するだけです。
私の最初の考えは、すべての色を追加して、それらを分割することです。これにより、平均が得られます。しかし、私の推測では、それは常に何か醜い茶色っぽいものになるでしょう.
別の考え: 特定の色の出現回数を数えること。しかし、それは私に問題を与えるでしょう: 255,0, 135と 255,0, 134は同じ色ではありませんが、誰もがピンクであることに同意します. たぶんこれかもしれませんが、50 か何かの「ステップ」で、最終的にその 50 の「中間」を取得しますか? つまり、数値 153 は 150-200 の範囲にあり、したがって 175 ?
RGBカラー(または何でも)を返す必要がありますが、画像と同じ「感触」を持つ必要があります..
注:複雑であっても問題ありません。良いものにしたいだけです。どこから始めればいいのかわからない。:)
更新:私は現在、以下のコードを使用していますが、驚くほどうまく機能しています。コードはこのように簡単です:
for(int i = 0; i < bufferSize; i += 4) {
int b = myPixelBuf[i];
int g = myPixelBuf[i+1];
int r = myPixelBuf[i+2];
float th, br;
UIColor *color = [[UIColor alloc] initWithRed:( r / 255.0f) green:( g / 255.0f ) blue:( b / 255.0f ) alpha:1.0f];
[color getHue:&th saturation:nil brightness:&br alpha:nil];
int hueInt = floor(th / 0.05f);
hueInt += 0.5;
[array addObject:[NSNumber numberWithFloat:hueInt]];
}
最後に、配列から最も多く発生する色相を取得し、0.05 で再度乗算して、0 から 1 の範囲の iOS の「通常の」色相値を取得します。0.05 という係数は、現時点では推測にすぎません。かなりうまくいっているようですが、私はその要素で少し遊ぶつもりです.