【问题标题】:Opencv compare Error: Sizes of input arguments do not matchOpencv比较错误:输入参数的大小不匹配
【发布时间】:2020-07-24 20:24:11
【问题描述】:

我尝试将 2 张黑白图像与 opencv 提供的函数 (compare()) 进行比较。起初我声明了一些变量,然后我只是尝试比较黑白图像,就像在 opencv 的文档中一样。最后我只计算置信百分比。但是每次我运行 m 程序时都会出现这个错误:

OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.3.0) Error: Sizes of input arguments do not match (The operation is neither 'array op array' (where arrays have
 the same size and the same type), nor 'array op scalar', nor 'scalar op array') in compare, file C:\OpenCV\opencv\sourc
es\modules\core\src\arithm.cpp, line 1228

这是我的代码:

Mat img2 = cv::imread("...");
Mat result;
Capture >>img1;
cv::compare(img1, img2, result, cv::CMP_EQ);
enter code here

【问题讨论】:

    标签: c++ opencv computer-vision opencv3.1


    【解决方案1】:

    但是这个错误非常冗长。甚至文档(https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html,不是真正的标签版本,但它不应该是相关的)说: 当src1和src2大小相同时两个数组的元素:

    我相信您可以调整第二张图片的大小以匹配第一张图片的大小: https://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20resize(InputArray%20src,%20OutputArray%20dst,%20Size%20dsize,%20double%20fx,%20double%20fy,%20int%20interpolation) 但不确定这样的比较是否适合您。

    您可以按如下方式检查 Mat 的尺寸:

    Mat img2 = cv::imread("...");
    int rows = M.rows;
    int cols = M.cols;
    

    顺便说一句,您使用 OpenCV3.1 标记了问题,但在错误消息中我们可以看到 4.3.0。你确定你使用的是正确的版本?

    【讨论】:

      猜你喜欢
      • 2016-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-31
      相关资源
      最近更新 更多