【问题标题】:OpenCV simple 2D matrix multiplication failsOpenCV 简单的二维矩阵乘法失败
【发布时间】:2019-10-17 18:15:43
【问题描述】:

我只是想将两个简单的二维矩阵相乘。

#include <iostream>
#include "opencv2/core.hpp"

using namespace std;
using namespace cv;

int main(const int argc,const char* argv[])
{

    Mat A = (Mat_<char>(2,2) << 1,2,3,4);
    Mat B = (Mat_<char>(2,2) << 2,2,2,2);
    Mat C = A*B;

    cout << C << endl;

    return 0;
}

为什么我会得到核心转储(gemm)?

在抛出 'cv::Exception' 实例后调用终止 什么():OpenCV(4.1.0)/OpenCV/opencv-4.1.0/modules/core/src/matmul.dispatch.cpp:337:错误:(-215:断言失败)(类型==(((5 ) & ((1

中止(核心转储)

【问题讨论】:

    标签: c++ opencv matrix


    【解决方案1】:

    https://github.com/opencv/opencv/blob/master/modules/core/src/matmul.dispatch.cpp#L337

    根据消息来源,似乎代码需要浮点数,

    CV_Assert_N( type == B.type(), (type == CV_32FC1 || type == CV_64FC1 ||类型 == CV_32FC2 ||类型 == CV_64FC2) );

    试试Mat_&lt;float&gt;(为我工作)

    【讨论】:

    • 天哪,成功了!谢谢!我试过 int, unsigned char ...但不是 float ^^
    • @LukasLeitner -- 建议 -- 断言告诉您源代码中的哪一行出现了问题。只需转到该行,它就基本上回答了您的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2021-12-26
    • 2012-12-29
    • 2013-01-25
    • 1970-01-01
    • 2013-05-23
    相关资源
    最近更新 更多