Я сталкивался с этой ошибкой в течение нескольких дней, когда у меня не получалось подтверждение при попытке сделать 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. Любая идея?