[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의 이미지가 와서 문제가 생긴 것 같습니다.



작성자

Posted by 드리머즈

관련 글

댓글 영역