use*_*500 5 java android bitmap mat
所以我使用下一个代码从blob创建一个位图:
byte[] blob = contact.getMP();
ByteArrayInputStream inputStream = new ByteArrayInputStream(blob);
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
Bitmap scalen = Bitmap.createScaledBitmap(bitmap, 320, 240, false);
Run Code Online (Sandbox Code Playgroud)
并且它返回下一个输出,这很好

然后我执行以下操作将位图制作成Mat,但随后我的颜色才会改变......
//Mat ImageMat = new Mat();
Mat ImageMat = new Mat(320, 240, CvType.CV_32F);
Utils.bitmapToMat(scalen, ImageMat);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,也不知道将位图变成Mat的另一种方法.怎么了?

小智 13
Android Bitmap中的颜色通道格式为RGB 但在opencv Mat中,默认情况下通道为BGR.
因此,当您执行Utils.bitmapToMat()时,[B,G,R]值存储在[R,G,B]通道中.红色和蓝色通道互换.
一种可能的解决方案是在opencv Mat上应用cvtcolor,如下所示: Imgproc.cvtColor(ImageMat,ImageMat,Imgproc.COLOR_BGR2RGB);
它对我有用.
| 归档时间: |
|
| 查看次数: |
2344 次 |
| 最近记录: |