2012-11-11 3 views
0

동적 카메라보기에서 안드로이드 용 OPENCV를 사용하여 얼룩 감지를 수행했습니다. 장치의 SDcard에있는 정적 비트 맵 이미지에 대해 비슷한 기능을 수행하려고했습니다. int android.graphics.Bitmap.getPixel (int x, int y)을 사용해 보았지만 효율적이지 않습니다. 처리하는 데 너무 많은 시간이 걸립니다. 그래서 openCV를 사용하여 비트 맵 이미지에서 블롭 감지를 수행 할 수 있는지 궁금합니다.비트 맵 처리 용 OpenCV

답변

2

비트 맵에서 처리 속도가 느려 지므로 직접 처리하지 마십시오. 비트 맵을 opencv 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()); 
관련 문제