2017-07-20 11 views
0

Iはマットあるすべての非ゼロnonZeroCoordinatesを格納するfindNonZero(IMG、nonZeroCoordinates)を使用します。OpenCVの:すべての "点" "マット" に格納された取得

ポイントベクターにさらに保存したいとします。私の質問は「は簡単な方法でマットに保存されているすべてのポイントを得ることが可能ということですか?」である

私の知る限りでは、私はnonZeroCoordinatesを反復処理することができますし、すべてのポイントを1つずつつずつ保存しますベクトルの中で。

Mat nonZeroCoordinates; 
vector<Point> inds; 
for (int i = 0; i < nonZeroCoordinates.total(); i++) { 
    Point pt(nonZeroCoordinates.at<Point>(i).x, nonZeroCoordinates.at<Point>(i).y);  
    inds.push_back(pt); 
} 

ご覧のとおり、コードはかなり冗長に見えます。簡単にすることは可能ですか?

+0

保存;' –

答えて

0

OpenCVのfindNonZero関数は出力パラメータとしての点のベクトルを除きます。 代わりにマットオブジェクトに結果を格納する次のように、あなたは、ベクターに直接保存することができます:一時的でない `inds.push_back(nonZeroCoordinates.at (i))を

vector<Point> inds; 
cv::findNonZero(inputMatrix, inds); 
関連する問題