Correct way to convert between Bitmap and Mat in OpenCV on Android?

13,702

Currently matToBitmap is a bit buggy, I've read they intend to fix it in a future release.

I can show it how I worked around it for a color image:

mMat = Utils.loadResource(this, resId, Highgui.CV_LOAD_IMAGE_COLOR);
Imgproc.cvtColor(mMat, result, Imgproc.COLOR_RGB2BGRA);
bmp = Bitmap.createBitmap(result.cols(), result.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(result, bmp);
mImageView.setImageBitmap(bmp);

Basically i perform that space color conversion first or like you said the result will be a weird blend of random colors.

Answer if it works, I think it does.

Share:
13,702

Related videos on Youtube

Harshad
Author by

Harshad

Updated on June 04, 2022

Comments

  • Harshad
    Harshad almost 2 years

    I'm currently trying to migrate a bit of legacy code from iPhone to Android. This code uses the OpenCV library to do some image processing. And I cannot understand how to do the conversion between Mat and Android Bitmap classes.

    This code shows a very simplified example which loads a bitmap into a Mat, then converts it back to Bitmap. The resulting image looks weird - it's filled with blue and white pixels. And the original is a normal PNG image...

      Mat img = Utils.loadResource(context, resId);
      Bitmap tmp = Bitmap.createBitmap(img.rows(), img.cols(),  
      Bitmap.Config.ARGB_8888);               
      Utils.matToBitmap(img, tmp);