2013-06-30 3 views
19
Mat b = new Mat(); 
Bitmap bmp = getIntent().getExtras().getParcelable("image_send"); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_image); 
    Mat tmp = new Mat (bmp.getWidth(), bmp.getHeight(), CvType.CV_8UC1); 
    Utils.bitmapToMat(bmp, tmp); 
    Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_RGB2GRAY); 
    //Imgproc.cvtColor(tmp, tmp, Imgproc.COLOR_GRAY2RGB, 4); 
    Utils.matToBitmap(tmp, bmp); 

    iv = (ImageView) findViewById(R.id.imageView1); 
    iv.setImageBitmap(bmp); 
} 

bmp를 표시 할 수 없습니다. 사진을 찍은 후 내 앱이 중지되었습니다.안드로이드 카메라를 사용하여 이미지 캡처 후 비트 맵으로 변환

+0

onCreate에서 opencv 코드를 사용할 수 없습니다 (네이티브는 아직로드되지 않았습니다) – berak

답변

24

Utils.bitmapToMap에는 ARGB_8888 또는 RGB_565 유형의 비트 맵이 필요합니다.

import org.opencv.android.Utils; 

Mat mat = new Mat();  
Bitmap bmp32 = bmp.copy(Bitmap.Config.ARGB_8888, true); 
Utils.bitmapToMat(bmp32, mat); 
3

Mat tmp = new Mat (bmp.getWidth(), bmp.getHeight(), CvType.CV_8UC1);

OpenCV의 매트 생성자 행 COLS 쌍 대신 폭, 높이, 인수로서, 그 반전을 기대하고있다.

시도 : 내 앱

Mat tmp = new Mat (bmp.getHeight(), bmp.getWidth(), CvType.CV_8UC1);

-1

같은 문제. 주요 활동에서 OpenCV를 활용할 수있게해야했습니다. (매트 라이브러리를 사용하면 앱에서 링크 오류가 발생했다고 가정합니다). 모든 샘플 앱에서이 작업을 수행합니다. 이것을 주 활동에 포함 시키십시오.

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
     @Override 
     public void onManagerConnected(int status) { 
      switch (status) { 
       case LoaderCallbackInterface.SUCCESS: 
       { 
        Log.i("OpenCVManager setup", "OpenCV loaded successfully"); 
        //Use openCV libraries after this 
       } break; 
       default: 
       { 
        super.onManagerConnected(status); 
       } break; 
      } 
     } 
    }; 

    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, 
       mLoaderCallback); 
    } 
관련 문제