使用OpenCV从帧中提取像素矢量?

时间:2012-12-19 13:59:56

标签: android image-processing opencv pixels

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

谢谢:)

1 个答案:

答案 0 :(得分: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())