0

我实际上是在 android 上的一个项目中工作,我想在其中提取一些特定的像素值(根据条件,使用阈值方法,我已将一些像素设置为某个值,而将所有其他像素设置为零)我想在向量中提取所有这些不同于零的值。我将使用所选像素的这个向量来做一些操作(例如平均值),OpenCV 中是否有一种方法可以帮助我做到这一点?

谢谢 :)

4

1 回答 1

1

我不知道这样的功能,但实际上实现它并不难(c++):

//'in' should be CV_8UC3
vector<int>& getNonZero(const Mat& in)
{
    //get size of result vector
    //this is all non-zero pixels:
    int count = countNonZero(in);
    vector<int>& result(count);
    int k = 0;

    for (int r = 0; r < in.rows; ++r)
    {
        for (int c = 0; c < in.cols; ++c)
        {
          if (in.at<int>(r, c))
          {
              result[k++] = in.at<int>(r, c);
          }
        }
    }

    return result;
}

而且许多 OpenCV 函数都有InputArray mask参数,所以使用它!例如:

void meanStdDev(InputArray src, OutputArray mean, OutputArray stddev, InputArray mask=noArray())

于 2012-12-19T14:36:26.300 回答