[OpenCV/java] Mat transpose 사용 후 검은 화면
프로그래밍/그 외2018. 4. 21. 14:56
안녕하세요. 개발자 드리머즈입니다.
Android에서 OpenCV의 CameraBridgeViewBase를 이용하여 카메라로부터 영상을 가져보면 세로 모드에서 영상이 옆으로 누워져서 보입니다. 이것을 해결하려면 영상을 90도 회전해야 했습니다.
1 2 3 4 5 6 | public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { mRgba = inputFrame.rgba(); mGray = inputFrame.gray(); return mRgba.t(); } | cs |
그래서 위 코드와 같이 onCameraFrame의 return값으로 mRgba의 transpose를 주기위해 mRgba.t()를 사용했더니.. 검은색 화면만 나옵니다.
1 2 3 4 5 6 | E/cv::error(): OpenCV(3.4.1) 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 /build/master_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp, line 101 E/org.opencv.android.Utils: nMatToBitmap caught cv::Exception: OpenCV(3.4.1) /build/master_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp:101: 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) E/CameraBridge: Mat type: Mat [ 800*600*CV_8UC4, isCont=true, isSubmat=false, nativeObj=0x78fa032660, dataAddr=0x78dd600000 ] E/CameraBridge: Bitmap type: 800*600 Utils.matToBitmap() throws an exception: OpenCV(3.4.1) /build/master_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp:101: 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_nMatToB | cs |
로드에서 자세히 살펴보니 위의 에러가 발생했습니다.
잘은 모르겠으나 800*600의 이미지를 기대했으나 transpose로 인해 600*800의 이미지가 와서 문제가 생긴 것 같습니다.
댓글 영역