0

私はアンドロイド用のOPENCVを使用して、動的カメラビューでブロブ検出を行いました。デバイスの SD カードに存在する静的なビットマップ イメージに対して同様の機能を実行したいと考えていました。int android.graphics.Bitmap.getPixel(int x, int y)を使用してみましたが、効率的ではありません。処理にとても時間がかかります。それで、openCVを使用してビットマップ画像でブロブ検出を行うことができるかどうか疑問に思っていますか?

4

2 に答える 2

3

処理が遅くなるため、ビットマップで直接処理を行うべきではありません。ビットマップを opencv の Mat 構造に変換し、Mat を処理してからビットマップに変換することをお勧めします。

opencv でブロブを検出するには、 Imgproc.findContoursが最適なツールです。検索すると、findContours に関する多くの情報が見つかります。

ビットマップからマットへの変換を行うには:

于 2013-02-15T12:10:43.667 に答える
0

Bitmap.getPixel(x,y) を使用する代わりに、すべてのピクセルを配列に取得し、この方法で処理することを検討する必要があります。

Bitmap b=BitmapFactor.decodeFromFile("");
int[] pixels=new int[b.getWidth()*b.getHeight()];
bitmap.getPixels(pixels, 0, b.getWidth(), 0, 0, b.getWidth(), b.getHeight());
for(int x=0;x<w;x++){
    for(int y=0;y<h;y++){
       int pixel=pixels[y*b.getWidth()+x];
       // do something with that pixel
    }
}
bitmap.setPixels(pixels, 0, b.getWidth(), 0, 0, b.getWidth(), b.getHeight());
于 2012-11-11T22:40:50.037 に答える