我正在尝试将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);

09-30 15:42
查看更多