opencv를 사용하여 android 비트 맵을 grescale로 변환하는 데 opencv를 사용하고 있습니다. 아래 코드는 제가 사용하고있는 코드입니다.그레이 스케일 Iplimage to android 비트 맵
IplImage image = IplImage.create(bm.getWidth(), bm.getHeight(), IPL_DEPTH_8U, 4); //creates default image
bm.copyPixelsToBuffer(image.getByteBuffer());
int w=image.width();
int h=image.height();
IplImage grey=cvCreateImage(cvSize(w,h),image.depth(),1);
cvCvtColor(image,grey,CV_RGB2GRAY);
bm은 원본 이미지입니다. 이 코드는 잘 작동하고 그레이 스케일로 변환됩니다, 나는 그것을 sdcard에 저장하고 다시로드하여 테스트했습니다.하지만 아래의 메소드를 사용하여로드하려고하면 내 앱이 중단되고 모든 제안 사항이 표시됩니다.
bm.copyPixelsFromBuffer(grey.getByteBuffer());
iv1.setImageBitmap(bm);
iv1은 bm을 설정하려는 이미지 뷰입니다.
이것은 좋지만 속도가 너무 느립니다 ... 800x600 이미지의 경우 최대 5 초가 걸립니다. 빠른 솔루션? –
성능이 중요한 코드의 경우 기본으로 돌아갈 방법이 없습니다. 이 제품은 조금 오래되었지만이를 수행하는 방법을 보여줍니다. http://www.ibm.com/developerworks/opensource/tutorials/os-androidndk/. – bytefish