我实际上是在 android 上的一个项目中工作,我想在其中提取一些特定的像素值(根据条件,使用阈值方法,我已将一些像素设置为某个值,而将所有其他像素设置为零)我想在向量中提取所有这些不同于零的值。我将使用所选像素的这个向量来做一些操作(例如平均值),OpenCV 中是否有一种方法可以帮助我做到这一点?
谢谢 :)
我实际上是在 android 上的一个项目中工作,我想在其中提取一些特定的像素值(根据条件,使用阈值方法,我已将一些像素设置为某个值,而将所有其他像素设置为零)我想在向量中提取所有这些不同于零的值。我将使用所选像素的这个向量来做一些操作(例如平均值),OpenCV 中是否有一种方法可以帮助我做到这一点?
谢谢 :)
我不知道这样的功能,但实际上实现它并不难(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())