【问题标题】:Count the black pixels using OpenCV使用 OpenCV 计算黑色像素
【发布时间】:2013-10-10 15:11:23
【问题描述】:

我在opencv 2.4.0C++ 工作

我正在尝试做一个练习,说我应该加载一个 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++ image opencv


【解决方案1】:

您可以使用countNonZero 计算图像中非黑色 (>0) 的像素数。如果要统计黑色(==0)像素的个数,需要从图像中的像素数(图像宽*高)中减去非黑色的像素数。

这段代码应该可以工作:

int TotalNumberOfPixels = bwImage.rows * bwImage.cols;
int ZeroPixels = TotalNumberOfPixels - countNonZero(bwImage);
cout<<"The number of pixels that are zero is "<<ZeroPixels<<endl;

【讨论】:

  • 只是好奇,问题主要是他的 TotalNumberOfPixels 错误,还是他将 C 和 C++ api 混合在一起?
  • 我认为问题在于您混合了 C 和 C++。您正在使用 C++ 接口,并且使用 Mat 作为图像的数据类型。 Mat 没有widthheight 成员,它有rowscols。此外,您可能正在使用带有 Mat 参数的 C API 函数 cvCountNonZero,该参数在 C++ API 中使用。
  • 当我输入该代码时,它给了我一个未处理的异常:内存位置 0x0033F890 的异常。它还在控制台/窗口中写入了一些内容:OpenCV Error: Assertion fialed == 1 & func !=0> in unknown function, file c:\slave\builds\WinInstallerMegaPack\src\opencv\modules\ core\src\stat.cpp, line496 我尝试使用您在新项目中提供的代码,我只是在其中加载图像并应用您的代码。同样的错误。
  • 也许我的安装有问题?如果这与它有任何关系,我正在使用 Visual Studio。是的,我把一些 c 和 c++ 的东西混在一起了。呵呵。
  • 为什么不使用countNonZero(bwImage==0) 来计算零像素?
猜你喜欢
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多