OpenCV 简单的二维矩阵乘法失败
Posted
技术标签:
【中文标题】OpenCV 简单的二维矩阵乘法失败【英文标题】:OpenCV simple 2D matrix multiplication fails 【发布时间】: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
中止(核心转储)
【问题讨论】:
【参考方案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_<float>
(为我工作)
【讨论】:
天哪,成功了!谢谢!我试过 int, unsigned char ...但不是 float ^^ @LukasLeitner -- 建议 -- 断言告诉您源代码中的哪一行出现了问题。只需转到该行,它就基本上回答了您的问题。以上是关于OpenCV 简单的二维矩阵乘法失败的主要内容,如果未能解决你的问题,请参考以下文章