Как получить объект Mat из Byte [] в openCV android?

Я работаю с библиотекой OpenCV в Android. У меня есть класс, который реализуетPictureCallBack.

Метод переопределенияonPictureTaken() как указано ниже,

     @Override
public void onPictureTaken(byte[] data, Camera camera) {
    Log.i(TAG, "Saving a bitmap to file");
    // The camera preview was automatically stopped. Start it again.
    mCamera.startPreview();
    mCamera.setPreviewCallback(this);

    // Write the image in a file (in jpeg format)
    try {
        FileOutputStream fos = new FileOutputStream(mPictureFileName);
        fos.write(data);
        fos.close();

    } catch (java.io.IOException e) {
        Log.e("PictureDemo", "Exception in photoCallback", e);
    }
}

Поскольку я хочу, чтобы данные изображения использовались в дальнейшем при обработке изображения вместо сохранения и перезагрузки изображения.

Каков наиболее эффективный способ получения объекта Mat из массива Byte? Я уже попробовал эти подходы:

Не знаю, что случилось с изображением.

Mat m=new Mat(); m.put(0,0,data);

Преобразование в растровое изображение, а затем использоватьbitmapToMat() В этом случае красный цвет становится синим.

У меня также нет проблем с сохранением изображения для будущего использования, но это приводит меня к исключению, поскольку файл еще не был сгенерирован, когда я использую ранее сохраненное изображение.

Ответы на вопрос(4)

Ваш ответ на вопрос