簡體   English   中英

處理圖像的RGB

[英]Dealing with RGB of the image

我正在開發一個應用程序。 我有要求,例如我的應用程序應檢測圖像的特定顏色。 例如,如果我要檢測紅色,則應該只看到圖像的紅色區域。 我已經嘗試通過以下方式:

偽碼:

首先,我使用以下方法以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次,我認為這不是更好的方法。那么有什么方法可以有效地做到這一點? 有沒有開源庫可以實現這一目標?

您可以開始優化代碼。 那里有很多不必要的操作和浮點/整數轉換。

for ( NSUInteger i = 0; i < width * height ; i ++ ) {
    NSUInteger red = rawData[i] ;
    if ( red > 230 ) {
        rawData[i+1] = 0 ;
        rawData[i+2] = 0 ;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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