我使用下面的代码从 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 ImageMat = new Mat(320, 240, CvType.CV_32F);
将分配一个矩阵,不适合接收bitmapToMat
的输出,类型应为CV_8UC4
。巧合的是,字节数相同 :)请参阅文档https://iopencv.com/docs/java/2.4.9/org/opencv/android/Utils.html - Antonio