0
我實際上在Android項目中工作,在其中我想提取一些特定的像素值(根據條件,使用閾值方法,我已經設置了一些像素到一定的值,其他所有的零)我想要在矢量中提取與零不同的所有這些值。我將使用所選像素的這個向量來做一些操作(例子的平均值),OpenCV中有沒有一種方法可以幫助我做到這一點?使用OpenCV從幀中提取像素矢量?
謝謝:)
我實際上在Android項目中工作,在其中我想提取一些特定的像素值(根據條件,使用閾值方法,我已經設置了一些像素到一定的值,其他所有的零)我想要在矢量中提取與零不同的所有這些值。我將使用所選像素的這個向量來做一些操作(例子的平均值),OpenCV中有沒有一種方法可以幫助我做到這一點?使用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())
您的解決方案似乎工作,但是,操縱由一個要素一個實時做特別是當它將會在我看來很慢!對於相機中的每一幀羚牛,做所有這些循環肯定會減慢處理速度,也許應用程序會崩潰! – 3arbouch
對於其他方法;我真的不知道如何使用InputArray掩碼來消除0值,例如從計算的平均值! – 3arbouch
@ 3arbouch安靜,兄弟 - 爲什麼尖叫?你有沒有試圖谷歌使用這些方法,而不是尖叫在我身上? InputArray應該只是二進制掩碼(Mat),如果像素。例如,如果位置'(i,j)'處的掩碼中的像素等於0,那麼該像素將不會被用於平均值計算。你讀過功能的描述??! – ArtemStorozhuk