2016-04-14 5 views
0

Ich habe eine App. Sie können damit Bilder machen. Wenn ein Bild erfasst wird, wird onPictureTaken() aufgerufen. In dieser Methode wird es in eine Bitmap umgewandelt und danach auf dem lokalen Speicher gespeichert.Android Mat zu JPEG konvertieren zu invertierten Farben

@Override 
    public void onPictureTaken(byte[] data, Camera camera) { 
     MatOfByte raw=new MatOfByte(data); 
     Mat mat = Imgcodecs.imdecode(raw,Imgcodecs.CV_LOAD_IMAGE_UNCHANGED); 
     Mat tmp = new Mat(); 

     Imgproc.cvtColor(mat, tmp, Imgproc.COLOR_BGRA2BGR); 

     Bitmap bmp = Bitmap.createBitmap(mat.cols(), mat.rows(), Bitmap.Config.ARGB_8888); 
     Utils.matToBitmap(mat, bmp); 

     storeBitMap(bmp); 
    } 

Ich weiß nicht, warum, aber wenn ich das Bild auf meinem Dateimanager öffnen hat es Farben invertiert. Was mache ich falsch?

+0

Haben Sie ohne die cvtColor-Methode versucht? –

Antwort

0

ich setzte versehentlich die falsche params

in Utils.matToBitmap (mat, BMP). Sollte sein: Utils.matToBitmap (tmp, bmp)

jetzt funktioniert alles gut.