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?