countNonZero上的错误,用于比较两个Mats

问题描述 投票:0回答:1

我拍摄了幻灯片的每张幻灯片的屏幕截图,并将它们存储在Mats的ArrayList中,我试图查看何时到达幻灯片的末尾,因此我使用了比较功能。但是,该实现在countNonZero函数上给出了一个例外:

E / cv :: error():OpenCV(3.4.5)错误:int断言失败(cn == 1)cv :: countNonZero(cv :: InputArray),文件/build/3_4_pack-android/opencv/modules/core/src/count_non_zero.cpp,第298行E / org.opencv.core:捕获了core :: countNonZero_10()cv :: Exception:OpenCV(3.4.5)/build/3_4_pack-android/opencv/modules/core/src/count_non_zero.cpp:298:错误:(-215:断言失败)函数'int中的cn == 1cv :: countNonZero(cv :: InputArray)'D / AndroidRuntime:关闭VME / AndroidRuntime:致命异常:main流程:com.example.autoslide,PID:27129CvException [org.opencv.core.CvException:cv :: Exception:OpenCV(3.4.5)/build/3_4_pack-android/opencv/modules/core/src/count_non_zero.cpp:298:错误:(-215:断言失败)函数'int中的cn == 1cv :: countNonZero(cv :: InputArray)']

这里是代码:

private void getScreens(WebView view) {
        int i = 0;
        do {
            Bitmap b = Screenshot.takeScreenshot(view);
            //imageView.setImageBitmap(b);
            Mat mat = new Mat();
            Utils.bitmapToMat(b.copy(Bitmap.Config.ARGB_8888, true), mat);
            screens.add(mat);
            view.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT));
            i++;
            //System.out.println(screens.size());
        } while(i <= 4 || !(matEquals(screens.get(i-1), screens.get(i-2))));



    }

    public static boolean matEquals(Mat img1, Mat img2){
        Mat out = new Mat();
        Core.compare(img1, img2, out, Core.CMP_NE);
        return Core.countNonZero(out) == 0;
    } 
java android-studio opencv assertion mat
1个回答
0
投票

确保此处Core.compare(img1, img2, out, Core.CMP_NE);的输出是单个通道Mat

检查文档Here

© www.soinside.com 2019 - 2024. All rights reserved.