将Blob从SQLite数据库转换为位图然后是垫子时,颜色会发生变化

时间:2013-05-18 14:45:09

标签: java android opencv bitmap

所以我有这个图像,我把它放在我的SQLite数据库中的Blob中 enter image description here

我接下来要做的是从数据库中读取blob(所以我将blob转换为位图)。 然后我将这个位图转换为Mat(因为我需要将它用于我的特征描述符)但是我最终得到的是以下Mat:

enter image description here

正如您所看到的,颜色都是错误的。这是我的代码:

    BitmapFactory.Options bmpFactoryOptions = new BitmapFactory.Options();
                        bmpFactoryOptions.inPreferredConfig = Bitmap.Config.ARGB_8888;
                        bmpFactoryOptions.inScaled = false;
                        bmpFactoryOptions.outHeight = 240;
                        bmpFactoryOptions.outWidth = 320;
                        // decodes the blob back into a bitmap
                        byte[] blob = contact.getMP();
                        ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                        Bitmap scalen = Bitmap.createScaledBitmap(bitmap, 320, 240, false);
Mat ImageMat = new Mat();
                        Utils.bitmapToMat(scalen, ImageMat);

我需要输出图像与输入相同,我做错了什么?

更新

当我用

读取位图图像时
    try {
                        FileOutputStream out = new FileOutputStream("mnt/sdcard/test.png");
                        bitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
                 } catch (Exception e) {
                        e.printStackTrace();
                 }

它使用正确的颜色返回图像,因此颜色更改与将位图转换为Mat相关。

0 个答案:

没有答案