我正在使用opencv 2.4.0
和C++
进行工作。
我正在尝试完成一个练习,要求我加载一张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;
}
目前这段代码非常基础,但它现在能够完成预期的功能。稍后会进行一些调整来使其更加简洁 :)
C
还是C++
写的?cvCountNonZero
是C
函数。C++
中为countNonZero
... http://docs.opencv.org/modules/core/doc/operations_on_arrays.html - UpAndAdam