2010-10-01 65 views
0

這裏是我的問題:C++,如何加載圖像和計數的特定顏色的像素

我正在尋找一種方式來將圖像導入C++然後遍歷它的像素,每次遞增計數器的像素髮現某種顏色。

我已經做了一些研究,但是我沒有發現任何特別有用的東西。 DevIL看起來不錯,但我不確定從哪裏開始。

這裏有一個位的C++/Python的僞代碼說明希望我想要做的事:

for image in folder: 

    A = 0; 
    B = 0; 

    for pixel in image: 

     if (pixel == colourA) {A++} 
     if (pixel == colourB) {B++} 

    //Output the count of colours for each image 
    outputToFile(A, B); 

沒有人有哪裏開始一些建議嗎?

感謝

編輯 一些額外的信息:我使用的是Windows 7和所有的圖像都.pngs

EDIT2 我就擁有了一切工作,但實際上找出當前的顏色像素。目前我使用的是:

int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0]; 

但它不起作用,我不知道它是如何工作的。我一直無法找到任何我能理解的事情。任何人都可以指出我如何找到某個像素的RGB值的正確方向?

編輯3 完成!對於任何想要做類似事情的人來說,大部分剩餘的問題和相當一部分代碼可以在here找到。謝謝您的幫助!

+0

您正在嘗試計算(部分)直方圖。你的平均圖形庫應該能夠爲你做到這一點(imagemagick,至少)。 – Seth 2010-10-01 00:47:52

回答

0

Definiately看看OpenCV因爲當你開始需要更多的空間時,OpenCV會讓你做更多的計算機視覺任務。並使用boost::filesystem爲'dir'中的每個圖像'編碼。

請注意,cv::compare函數基本上爲你做了一半的工作......我會讓你閱讀它,並享受利用OpenCV API。

0

取決於平臺和圖像格式。在Windows中,本地支持BMP圖像(即,在API中)。 ImageMagick是一個跨平臺的庫,非常通用,它可以使用任何格式,但它很重。 Qt也有一些圖像處理 - 僅限於最常見的格式。

2

你應該看看OpenCV。

相關問題