0

我已经使用 OPENCV for android 在动态相机视图中进行斑点检测。我想对设备 SD 卡中存在的静态位图图像执行类似的功能。我尝试使用int android.graphics.Bitmap.getPixel(int x, int y),但效率不高。需要很多时间来处理。所以,我想知道是否可以使用openCV在位图图像中进行斑点检测?

4

2 回答 2

3

您不应该直接在位图上进行处理,因为它会更慢。最好将位图转换为opencv Mat结构,对Mat进行处理,然后再转换回位图。

要使用 opencv 检测 blob,最好的工具是Imgproc.findContours如果您搜索,您会发现很多关于 findContours 的内容。

要将位图转换为 mat 转换:

于 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 回答