我正在尝试将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),我正在正确使用它,但是仍然无法正常工作。
有谁可以帮我离开这里吗?
最佳答案
换线:
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);