Jak uzyskać obiekt Mat z Byte [] w openCV android?
Pracuję z biblioteką OpenCV w Androidzie. Mam klasę, która implementujePictureCallBack
.
Metoda przesłonięciaonPictureTaken()
jest jak podano poniżej,
@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);
}
}
Ponieważ chcę, aby dane obrazu były dalej wykorzystywane w przetwarzaniu obrazu zamiast zapisywania i ponownego ładowania obrazu.
Jaki jest najskuteczniejszy sposób uzyskania obiektu Mat z tablicy Byte? Próbowałem już tych podejść:
Nie wiem, co stało się z obrazem.
Mat m=new Mat(); m.put(0,0,data);
Konwersja na mapę bitową, a następnie użyjbitmapToMat()
W tym przypadku czerwony kolor staje się niebieski.
Nie mam też problemu z zapisaniem obrazu do wykorzystania w przyszłości, ale prowadzi to do wyjątku, ponieważ plik nie został jeszcze wygenerowany, gdy używam wcześniej zapisanego obrazu.