我想将位图中的JPEG转换为mat。我知道Utils方法只支持RGB888格式的图像,所以我强制我的相机采用JPEG格式,拍摄图片,解码并将其转换为RGB 888格式,然后调用utils方法以从中获取垫子。这是基本的代码:android opencv Utils.BitmapToMap运行时异常帮助?
Bitmap imageBitmap = BitmapFactory.decodeByteArray(mData, 0, mData.length);
double scale = 0.5; // Make the image smaller incase I was running out of memeory.
imageBitmap = Bitmap.createScaledBitmap(imageBitmap, (int) (imageBitmap.getWidth() * scale),
(int) (imageBitmap.getHeight() * scale), false);
imageBitmap = PNGtoRGB888(imageBitmap);
Mat m = Utils.bitmapToMat(imageBitmap); // I get a runtime exception
这里是PNGtoRGB888方法:
private Bitmap PNGtoRGB888(Bitmap _img)
{
int numPixels = _img.getWidth() * _img.getHeight();
int[] pixels = new int[numPixels];
// Get Bitmap's pixels. Each int is the color values for one pixel.
_img.getPixels(pixels, 0, _img.getWidth(), 0, 0, _img.getWidth(), _img.getHeight());
// Create a Bitmap of the appropriate format.
Bitmap result = Bitmap.createBitmap(_img.getWidth(), _img.getHeight(), Config.ARGB_8888);
// Set RGB pixels.
result.setPixels(pixels, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight());
return result;
}
任何想法,为什么我会得到运行时异常?!?!?!?
当我调用Mat m = Utils.bitmapToMap(imageBitMap);我很确定底层的异常是内存不足。 – segFault