【发布时间】:2019-05-06 04:43:39
【问题描述】:
所以我用下一个代码从一个 blob 制作位图:
byte[] blob = contact.getMP();
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap scalen = Bitmap.createScaledBitmap(bitmap, 320, 240, false);
它会返回下一个输出,这很好
然后我执行以下操作将位图变成一个 Mat,但是我的颜色只是改变了......
//Mat ImageMat = new Mat();
Mat ImageMat = new Mat(320, 240, CvType.CV_32F);
Utils.bitmapToMat(scalen, ImageMat);
我不知道为什么,也没有其他方法可以将位图变成 Mat。怎么了?
【问题讨论】:
-
看起来蓝色和红色通道交换了。你确定你的 Mat 将图像存储为 RGB(Java 的默认值)而不是 BGR(Opencv 的默认值)
-
关于这个问题的任何更新?
-
您找到解决方案了吗?我也面临同样的问题。
-
附带说明:1)我相信您的注释行更好 2)
Mat ImageMat = new Mat(320, 240, CvType.CV_32F);将分配一个不适合接收bitmapToMat输出的矩阵,类型应为@987654328 @。巧合的是相同的字节数 :) 见 doc iopencv.com/docs/java/2.4.9/org/opencv/android/Utils.html