2012-11-11 46 views
0

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

回答

2

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

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

要做到位图转换垫:

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());