Utils.bitmapToMat崩溃的应用程序

时间:2012-12-11 16:21:19

标签: android opencv

我正在尝试将bmp文件转换为Mat,然后将其转换为灰度。但是我无法让它正常工作。这就是我所拥有的:

String filename = "/mnt/sdcard/DCIM/01.bmp";    
Bitmap bmp = BitmapFactory.decodeFile(filename);
Mat imgToProcess = null;

Utils.bitmapToMat(bmp, imgToProcess);

但是无论何时使用最后一行,应用程序都会崩溃(剩下的时间它会继续正常)。

其余代码将是:

Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_BGR2GRAY);
Imgproc.cvtColor(imgToProcess, imgToProcess, Imgproc.COLOR_GRAY2RGBA, 4);
Utils.matToBitmap(imgToProcess, bmp);

我不知道它是否有效,因为我无法从代码的早期部分将文件转换为Mat。查看Utils的文档(找到here)我正确使用它,但它仍然无效。

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:3)

更改行:

Mat imgToProcess = null;

到此:

Mat imgToProcess = new Mat();

或者这个:

 Mat imgToProcess = new Mat(bmp.getHeight(), bmp.getHeight(), CvType.CV_8UC4);

为什么不用Highgui.imread代替?

Mat imgToProcess = Highgui.imread(filename);