7

OpenCVを使用してバイナリ画像の白いピクセル数を取得する最速の方法は何ですか? 2 つの for ループを使用してピクセル単位で画像にアクセスするよりも高速なものはありますか?

4

1 に答える 1

11

これを実現する最も簡潔な方法は次のとおりです。

cv::Mat image, mask;    //image is CV_8UC1
cv::inRange(image, 255, 255, mask);
int count = cv::countNonZero(mask);

バイナリ イメージを操作している場合、 への呼び出しcv::inRange()は不要であり、単純cv::countNonZero()に十分です。

parallel_for_()どのメソッドもすべてのピクセルを反復処理する必要がありますが、これは並列実行を可能にするOpenCV の組み込み を利用できる場合があります。

画像が連続している場合は、単一のループを使用してすべてのデータを反復処理できます。

于 2013-06-04T23:55:02.637 に答える