在opencv二进制图像中计算"白色"像素(高效)

Bil*_*ham 7 c++ optimization opencv image-processing

我试图计算OpenCV二进制图像中的所有白色像素.我目前的代码如下:

  whitePixels = 0;
  for (int i = 0; i < height; ++i)
    for (int j = 0; j < width; ++j)
      if (binary.at<int>(i, j) != 0)
        ++whitePixels;
Run Code Online (Sandbox Code Playgroud)

但是,在使用gprof进行分析之后,我发现这是一段非常慢的代码,并且在程序中存在很大的瓶颈.

有没有一种方法可以更快地计算出相同的值?

Jos*_*der 23

cvCountNonZero.通常,OpenCV的任务实现都经过了大量优化.

  • @karlphillip你的意思是[`cv :: countNonZero`](http://opencv.willowgarage.com/documentation/cpp/core_operations_on_arrays.html#cv-countnonzero)? (3认同)