1

私は1つのアプリケーションを開発しています。アプリケーションが画像の特定の色を検出する必要があるなどの要件があります。たとえば、赤い色を検出したい場合は、画像の赤い領域のみを表示する必要があります。私は次の方法でこれを試しました:

疑似コード:

まず、次を使用して、画像の各ピクセルの情報を RGB 形式で取得しました。

    for(int i=0; i < width; ++i)
{
    for (int j=0; j <height; j++)
    {
         byteIndex = (bytesPerRow * j) + i * bytesPerPixel;

        CGFloat red   = (rawData[byteIndex]     * 1.0) /255.0;
        CGFloat green = (rawData[byteIndex + 1] * 1.0)/255.0 ;
        CGFloat blue  = (rawData[byteIndex + 2] * 1.0)/255.0 ;
        if (red>0.9 && red<1)
        {
            rgba[byteIndex]   =red*255;
            rgba[byteIndex+1] =green*0 ;
            rgba[byteIndex+2] = blue*0;
            count++;

        }

    }

}

次に、この情報を青と緑のセクションがヌルの別の画像に割り当てているため、画像の赤い領域しか見ることができません。正常に動作しています。

しかし、問題は for ループにあります。画像の高さと幅に応じてループを繰り返す必要があります。例えば。画像の高さが 300 で幅が 400 の場合、for ループを 300 * 400 = 120000 回繰り返す必要があります。これを達成するためのオープンソースライブラリはありますか?

4

1 に答える 1

0

コードの最適化を開始できます。そこには不要な操作や浮動小数点数/整数の変換がたくさんあります。

for ( NSUInteger i = 0; i < width * height ; i ++ ) {
    NSUInteger red = rawData[i] ;
    if ( red > 230 ) {
        rawData[i+1] = 0 ;
        rawData[i+2] = 0 ;
    }
}
于 2013-02-10T10:26:24.263 に答える