Java 用于在android中处理位图图像的OpenCV

Java 用于在android中处理位图图像的OpenCV,java,android,image,opencv,image-processing,Java,Android,Image,Opencv,Image Processing,我使用OPENCV for android在动态摄影机视图中进行水滴检测。我想对设备SD卡中的静态位图图像执行类似的功能。我试着使用intandroid.graphics.Bitmap.getPixel(intx,inty),但效率不高。这需要花很多时间来处理。 所以,我想知道是否有可能使用openCV在位图图像中进行斑点检测>P>而不是使用位图.GETMIX(x,y),你应该考虑把所有的像素变成一个数组并用这种方法处理。 Bitmap b=BitmapFactor.decodeFromFile

我使用OPENCV for android在动态摄影机视图中进行水滴检测。我想对设备SD卡中的静态位图图像执行类似的功能。我试着使用intandroid.graphics.Bitmap.getPixel(intx,inty),但效率不高。这需要花很多时间来处理。
所以,我想知道是否有可能使用openCV在位图图像中进行斑点检测

>P>而不是使用位图.GETMIX(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());
Bitmap b=BitmapFactor.decodeFromFile(“”);
int[]像素=新的int[b.getWidth()*b.getHeight()];
getPixels(像素,0,b.getWidth(),0,0,b.getWidth(),b.getHeight());

对于(int x=0;x而不是使用位图.GETEngely(x,y),您应该考虑将所有像素获取到一个数组中并以这种方式处理。< /P>
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());
Bitmap b=BitmapFactor.decodeFromFile(“”);
int[]像素=新的int[b.getWidth()*b.getHeight()];
getPixels(像素,0,b.getWidth(),0,0,b.getWidth(),b.getHeight());

对于(int x=0;x您不应该直接在位图上进行处理,因为这样会比较慢。 最好将位图转换为opencv Mat结构,处理Mat,然后将其转换回位图

要使用opencv检测斑点,可用的最佳工具是,如果您进行搜索,您将找到许多有关FindContentours的内容

要进行位图到材质的转换,请执行以下操作:

  • 位图到Mat:
  • Mat到位图:

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

要使用opencv检测斑点,可用的最佳工具是,如果您进行搜索,您将找到许多有关FindContentours的内容

要进行位图到材质的转换,请执行以下操作:

  • 位图到Mat:
  • Mat到位图: