OpenCV矩阵乘法断言

3

我正在获取

OpenCV Error: Assertion failed (type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || type == CV_32FC2 || type == CV_64FC2)) in gemm, file /build/buildd
/opencv-2.4.9+dfsg/modules/core/src/matmul.cpp, line 711
terminate called after throwing an instance of 'cv::Exception'
  what():  /build/buildd/opencv-2.4.9+dfsg/modules/core/src/matmul.cpp:711: error: (-215) type == B.type() && (type == CV_32FC1 || type == CV_64FC1 || type == 
CV_32FC2 || type == CV_64FC2) in function gemm

我想知道文档中是否提到矩阵乘法仅支持浮点数矩阵?我只能在stackoverflow上找到人们这样说,但是还没有找到与标准文档相媲美的内容。


请按照错误提示进行操作,并检查您的输入类型是否完全正确,例如,CV_64F(6)!= CV_32F(5)。 - berak
@berak 谢谢,你让我检查了一下,我意识到代码确实存在一个错误,在某个时刻矩阵类型出现了意外情况。尽管如此,我仍然想要更多关于我提出的与此无关但有用的问题的信息。 - oblitum
我不确定这是否足够,但是gemm的文档确实指出只接受浮点类型。 - beaker
@beaker 谢谢,我想那就够了。 - oblitum
1个回答

1

您没有提到您使用的运算符,但可以尝试mat1.mul(mat2),mat1 * mat2,multiply(mat1,mat2,dst)或执行以下操作:

mat1.convertTo(mat1, CV_32FC1);
mat2.convertTo(mat2, CV_32FC1);

如果需要的话:

mat1.convertTo(mat1, CV_8UC1);
mat2.convertTo(mat2, CV_8UC1);

我正在使用 *。在这个问题中,我只关心是否有文档支持这个信息,因为它在其他的SO答案中被提到过。我已经解决了我的错误。 - oblitum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接