4

bmp ファイルをマットに変換してから、グレースケールに変換しようとしています。しかし、私はそれを機能させるのに問題があります。これが私が持っているものです:

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 のドキュメント (ここにあります) を見ると、正しく使用していますが、まだ機能していません。

誰か助けてくれませんか?

4

1 に答える 1

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);
于 2012-12-11T16:27:00.507 に答える