Android, OpenCV, konwersja Mat->Bitmap

0

Witam, proszę Was o pomoc, nie wiem jak sobie poradzić z tym błędem, siedzę, próbuję i nie ma efektów.
Mianowicie: program skupia sie na obcięciu obrazu i wyświetleniu go, OpenCV działa na zmiennych typu Mat, a do wyświetlenia obrazu na Androidzie potrzebuję skonwertować obraz na Bitmapę i tu powstaje problem.
Funkcja która obcina obraz:(działa prawidłowo)

Mat CutImage(Mat matImage)
    {
        Mat imageMat;
        Mat cuttedImage=new Mat();

        imageMat=matImage;


        Rect rect=new Rect(X_Left(imageMat),     Y_Up(imageMat),     Ex_Right(imageMat)-X_Left(imageMat)+1,   Y_Low(imageMat)-Y_Up(imageMat)+1); //Rect(int x, int y, int width, int height) - tworzymy obszar(prostokąt) do wycięcia z obrazu 

        

        Mat submat= imageMat.submat(rect);  // przypisujemy zmiennej submat(typu mat) wyciętego obszaru
        submat.copyTo(cuttedImage); //kopiujemy obraz do drugiej zmiennej



        return cuttedImage;
    }

następnie ją wywołuje


     Mat cuttedImage=new Mat();
     cuttedImage=CutImage(matBinarizedImage); // matBinarizedImage jest wcześniej obrobionym obrazem

     Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); // przypisanie obrazu zdjęcia do zmiennej bitmap
.
.
.//jakiś kod
.
.

Utils.matToBitmap(cuttedImage, myBitmap); // konwersja typu Mat do Bitmap  ---**** I TU POWSTAJE PROBLEM

LogCat:

12-02 21:38:01.740  22684-22684/com.example.raf.rozpoznawanie E/cv::error()﹕ OpenCV Error: Assertion failed (src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols) in void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean), file /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp, line 97
12-02 21:38:01.740  22684-22684/com.example.raf.rozpoznawanie E/org.opencv.android.Utils﹕ nMatToBitmap catched cv::Exception: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)
12-02 21:38:01.740  22684-22684/com.example.raf.rozpoznawanie W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x415de438)
12-02 21:38:01.750  22684-22684/com.example.raf.rozpoznawanie E/AndroidRuntime﹕ FATAL EXCEPTION: main
    java.lang.IllegalStateException: Could not execute method of the activity
            at android.view.View$1.onClick(View.java:3591)
            at android.view.View.performClick(View.java:4084)
            at android.view.View$PerformClick.run(View.java:16987)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4794)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at android.view.View$1.onClick(View.java:3586)
            at android.view.View.performClick(View.java:4084)
            at android.view.View$PerformClick.run(View.java:16987)
            at android.os.Handler.handleCallback(Handler.java:615)
            at android.os.Handler.dispatchMessage(Handler.java:92)
            at android.os.Looper.loop(Looper.java:137)
            at android.app.ActivityThread.main(ActivityThread.java:4794)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:511)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
            at dalvik.system.NativeStart.main(Native Method)
     Caused by: CvException [org.opencv.core.CvException: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, jclass, jlong, jobject, jboolean)
    ]
            at org.opencv.android.Utils.nMatToBitmap2(Native Method)
            at org.opencv.android.Utils.matToBitmap(Utils.java:123)
            at org.opencv.android.Utils.matToBitmap(Utils.java:132)
            at com.example.raf.rozpoznawanie.MainActivity.pobierzZdjecie(MainActivity.java:66)
            ... 14 more

PS. obraz po wywołaniu funkcji powstaje, posiada kolumny i wiersze. W googlach wyczytałem że obraz mat ma inną wielkość niż bitmapa, ale nie mam pojęcia jak to rozwiązać, lub może to jednak nie jest powodem?

0

Problem solved. Nie wiem czy to ma na to wpływ, ale w większości przypadków, gdy siedzę nad kodem długi czas i nie mogę czegoś zrobić, to zaraz po napisaniu wątku z moim problemem wpadam na rozwiązanie.
Rozwiązanie:

Imgproc.resize(cuttedImage, cuttedImage, matBinarizedImage.size());

1 użytkowników online, w tym zalogowanych: 0, gości: 1