我正在尝试将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)我正确使用它,但它仍然无效。
有人可以帮助我吗?
答案 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);