OpenCVバイナリイメージのすべての白いピクセルを数えようとしています。OpenCVバイナリイメージの「白」ピクセルをカウントする(効率的に)
whitePixels = 0;
for (int i = 0; i < height; ++i)
for (int j = 0; j < width; ++j)
if (binary.at<int>(i, j) != 0)
++whitePixels;
をしかし、私は、これはコードの非常に遅い部分、およびプログラムの大きなボトルネックであることを発見しましたgprofのでプロファイリングした後、次のように私の現在のコードがあります。
同じ値をより速く計算できる方法はありますか?
高さと幅を変更してみましたか?私は幅と高さにループを意味する?これは、イメージがどのようにメモリにレイアウトされるかによって、ループを改善することができます。 –
このat()関数ではなく、直接画像データにアクセスできますか? – jrok
ジョークとして示唆を与えることはおそらくより速くなるでしょう。 [このFAQエントリ](http://opencv.willowgarage.com/wiki/faq#How_to_access_image_pixels)が適切かどうかは疑問です。 – Brian