私は実際に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())