Java Android上OpenCV中位图和Mat之间转换的正确方法?

Java Android上OpenCV中位图和Mat之间转换的正确方法?,java,android,opencv,Java,Android,Opencv,我目前正在尝试将一些遗留代码从iPhone迁移到Android。这段代码使用OpenCV库进行一些图像处理。 我无法理解如何在Mat和Android位图类之间进行转换 此代码显示了一个非常简化的示例,该示例将位图加载到Mat中,然后将其转换回位图。生成的图像看起来很奇怪——它充满了蓝色和白色像素。而原来是一个正常的PNG图像 Mat img = Utils.loadResource(context, resId); Bitmap tmp = Bitmap.createBitmap(img

我目前正在尝试将一些遗留代码从iPhone迁移到Android。这段代码使用OpenCV库进行一些图像处理。 我无法理解如何在Mat和Android位图类之间进行转换

此代码显示了一个非常简化的示例,该示例将位图加载到Mat中,然后将其转换回位图。生成的图像看起来很奇怪——它充满了蓝色和白色像素。而原来是一个正常的PNG图像

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

目前matToBitmap有点问题,我听说他们打算在未来的版本中修复它

我可以向它展示我是如何处理彩色图像的:

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);
基本上,我先执行空间颜色转换,或者像你说的那样,结果将是一种奇怪的随机颜色混合


回答如果有效,我认为有效。

如何获得
剩余值?我正在尝试将一张相机拍摄的图像从bmp转换成Mat,处理,然后再返回。因此,所有关于bmp的可用信息都是路径名和bmp本身。@user1446598您在Android中使用openCV吗?是的。问题得到了解决——我找到了一个我目前找不到的非常有帮助的帖子。我仍然不知道如何从相机拍摄的照片中获取剩余物(与可绘制的项目不同),但建议使用路径名。你说matToBitmap是buggy是什么意思?也许他们现在已经解决了这个问题。不管怎样,安东出错是因为他的代码错了,而不是因为错误。