我在opencv 2.4.0
工作和C++
使用OpenCV的
我嘗試這樣做,說我應該加載一個RGB圖像的運動計數的黑色像素,將其轉換爲灰度並保存新的圖像。下一步是將灰度圖像製作成二進制圖像並存儲該圖像。我有很多工作。
我的問題是計算二值圖像中黑色像素的數量。
到目前爲止,我已經在網上搜索並查看了這本書。我發現的方法似乎是最有用的方法。
int TotalNumberOfPixels = width * height;
int ZeroPixels = TotalNumberOfPixels - cvCountNonZero(cv_image);
但我不知道如何存儲這些值並在cvCountNonZero()
中使用它們。當我傳遞我想從這個函數計算的圖像時,我得到一個錯誤。
int main()
{
Mat rgbImage, grayImage, resizedImage, bwImage, result;
rgbImage = imread("C:/MeBGR.jpg");
cvtColor(rgbImage, grayImage, CV_RGB2GRAY);
resize(grayImage, resizedImage, Size(grayImage.cols/3,grayImage.rows/4),
0, 0, INTER_LINEAR);
imwrite("C:/Jakob/Gray_Image.jpg", resizedImage);
bwImage = imread("C:/Jakob/Gray_Image.jpg");
threshold(bwImage, bwImage, 120, 255, CV_THRESH_BINARY);
imwrite("C:/Jakob/Binary_Image.jpg", bwImage);
imshow("Original", rgbImage);
imshow("Resized", resizedImage);
imshow("Resized Binary", bwImage);
waitKey(0);
return 0;
}
到目前爲止,這段代碼是非常基本的,但是它現在做它應該做的。一些調整將在稍後進行清理:)
您需要提供你收到的錯誤。這是一個編譯錯誤?運行時錯誤?等等? – UpAndAdam
你是用'C'還是'C++'做這個:'cvCountNonZero'是'C'函數。 'C++'是'countNonZero' ... http://docs.opencv.org/modules/core/doc/operations_on_arrays.html – UpAndAdam