Утверждение не удалось MattoBitmap OpenCv Android - PullRequest
0 голосов
/ 08 ноября 2019

Я сталкивался с этой ошибкой в ​​течение нескольких дней, когда у меня не получалось подтверждение при попытке сделать ImgProc.FloodFill из opencv в Android Java.

Код:

bitmap = textureView.getBitmap();

if (bitmap == null)
    return;

mat = new Mat();
Mat flooded = new Mat();

bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

Utils.bitmapToMat(bitmap, mat);
// Utils.bitmapToMat(bitmap, flooded);

Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGBA2RGB);
//processImage(mat);


Imgproc.floodFill(mat, flooded, new Point(1, 1), new Scalar(255, 255, 255), new Rect(), new Scalar(2, 2, 2), new Scalar(2, 2, 2), 4);
//bitmap = getResizedBitmap(bitmap,flooded.rows(),flooded.cols());

Utils.matToBitmap(flooded, bitmap);

Ошибка:

E/cv::error(): OpenCV(3.4.5) 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/3_4_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp, line 101
E/org.opencv.android.Utils: nMatToBitmap caught cv::Exception: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp:101: error: (-215:Assertion failed) 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/AndroidRuntime: FATAL EXCEPTION: OpenCVAnalysis
    Process: com.hololo.tutorial.sample, PID: 1591
    CvException [org.opencv.core.CvException: OpenCV(3.4.5) /build/3_4_pack-android/opencv/modules/java/generator/src/cpp/utils.cpp:101: error: (-215:Assertion failed) 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.hololo.tutorial.sample.MagicalCamera.MagicCamera$4.analyze(MagicCamera.java:314)
        at androidx.camera.core.ImageAnalysis$2.onImageAvailable(ImageAnalysis.java:291)
        at androidx.camera.core.AndroidImageReaderProxy$1.onImageAvailable(AndroidImageReaderProxy.java:105)
        at android.media.ImageReader$ListenerHandler.handleMessage(ImageReader.java:812)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.os.HandlerThread.run(HandlerThread.java:65) 

Что я пытался: получить Утверждение не удалось, потому что маска должна иметь rows+2 и cols +2, япопытаться инициализировать маску, чтобы иметь 2+ строки и 2+ столбцов, но затем после применения FloodFill и попытки Utils.Mattobitmap, он дает Ошибка подтверждения :

(src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols)

Означает, чтоmat не такой же размер, как bitmap. Я пытаюсь преобразовать или mat измерение не 2. Любая идея?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...