2013-06-30 11 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); 
} 

nicht die bmp anzeigen kann. Meine App hat nach dem Fotografieren aufgehört.konvertieren Bitmap Mat nach der Aufnahme Bild mit Android-Kamera

+0

Sie können OpenCV-Code nicht in onCreate verwenden (das native ist also noch nicht geladen) – berak

Antwort

24

Utils.bitmapToMap erfordert Bitmap vom Typ ARGB_8888 oder 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 Mat Konstruktor erwartet Reihen Paar cols anstelle von Breite, Höhe als Argumente, sie invertieren.

Versuchen:

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

-1

gleiche Problem mit meiner App. In der Hauptaktivität musste ich OpenCV nutzbar machen. (Ich gehe davon aus, dass Ihre App einen Linkfehler ausgelöst hat, als die Mat-Bibliothek verwendet wurde). Alle Beispiel-Apps tun dies. Fügen Sie dies in die Haupttätigkeit ein.

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); 
    } 
Verwandte Themen