2

UIImage から赤チャネルの平均値を取得するにはどうすればよいですか。

このコードを使用して、ピクセルの赤チャンネル値 (240,160) を調べることができます。

CFDataRef pixelData = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
const UInt8* data = CFDataGetBytePtr(pixelData);


        int pixelInfo = ((image.size.width * 240) + 160) * 4; // The image is png

        UInt8 red = data[pixelInfo];  

私が興味を持っているのは、画像全体のすべてのピクセル、または画像の正方形部分からの赤のチャネル値の平均を見つけることです。

これは 320*480 計算を使用せずに可能ですか?

4

1 に答える 1

0

あなたは正しいことをしています。平均が必要な場合は、調査している領域のすべての赤チャネルの値を追加する必要があります。フィルターを使用して赤のチャンネルを分離したとしても、結果的に同じものになります。私の意見では、あなたがやっているようにピクセルバッファを通過するのが最速の方法です。

持っている他の情報 (たとえば、均一性など) に基づいて最適化できる場合があるため、四角形のサイズを小さくすることができます。または、たとえば、1 つおきのピクセル (またはそれ以上) をスキップできる場合があります。写真では、これで許容できる平均の近似結果が得られると思います。スキャンする領域を減らすことができます。

あなたに余分な道を与えるためのちょっとした考え...

于 2012-08-27T18:21:49.510 に答える