2012-07-02 4 views
0

저는 Android 바이너리를 사용하고 있습니다. OpenCV에서 거리 변환을 수행하는 것은 이번이 처음입니다. OpenCV specification은 distanceTransform의 출력 이미지가 32 비트 부동 소수점 단일 채널 이미지라고 말합니다. 이것을 mat (mDist)로 가져 오지만 매트에서 비트 맵을 만들면 IllegalStateException이 발생합니다. 이것은 출력물과 매트 오브젝트의 비 호환성 때문입니까? 매트 등의 색상 채널 정보를 지정해야합니까? 다음은 내 코드 부분입니다.OpenCV 출력 오류에서의 거리 변환

enter image description here

 Mat mImg = new Mat(); 
     Mat mThresh = new Mat(); 
     Mat mDist = new Mat(); 

     ImageView imgView = (ImageView) findViewById(R.id.imageView); 
     Bitmap bmpIn = BitmapFactory.decodeResource(getResources(), 
       R.drawable.w1);  
     Utils.bitmapToMat(bmpIn, mImg); //Load image to mat 

     Imgproc.cvtColor(mImg, mImg, Imgproc.COLOR_BGR2GRAY);  
     Imgproc.threshold(mImg, mThresh, 0, 255, Imgproc.THRESH_BINARY 
       | Imgproc.THRESH_OTSU); //Grayscale and thresholding   

     Imgproc.distanceTransform(mThresh, mDist, Imgproc.CV_DIST_L2, Imgproc.CV_DIST_MASK_PRECISE); 

     Bitmap bmpOut = Bitmap.createBitmap(mDist.cols(), mDist.rows(), 
       Bitmap.Config.ARGB_8888); 

     Utils.matToBitmap(mDist, bmpOut); //Error in creating bitmap 
     imgView.setImageBitmap(bmpOut); 

답변

0

이 장애는 다음의 코드이었다;

적용해야하는 Bitmap.Config가 ARGB_8888이 아닙니다. 이 함수는 8 비트 단일 채널 매트를 만듭니다.