我在工作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;
}
到目前为止,这段代码是非常基本的,但它现在已经完成了它应该做的事情。稍后将进行一些调整以清理它:)