我在OpenCV中有两个Mat图像:
Mat ft = Mat::zeros(src.rows,src.cols,CV_32FC1);
Mat h = Mat::zeros(src.rows,src.cols,CV_32FC1);
Run Code Online (Sandbox Code Playgroud)
两个图像都是相同的尺寸,并且是从单个源图像计算出来的.
我想将这两个图像相乘但尝试使用这两个图像
Mat multiply1 = h*ft;
Mat multiply2;
gemm(h,ft,1,NULL,0,multiply2);
Run Code Online (Sandbox Code Playgroud)
但两者都会导致以下断言失败:
OpenCV错误:断言失败(a_size.width == len)在未知函数中,文件... matmul.cpp抛出'cv :: exception'后调用终止
我究竟做错了什么?
Chr*_*ris 105
你说矩阵是相同的维度,但你正在尝试对它们执行矩阵乘法.只有当它们是正方形时,才可能将具有相同尺寸的矩阵相乘.在您的情况下,您会收到断言错误,因为尺寸不是正方形.乘法矩阵时必须小心,因为乘法有两种可能的含义.
矩阵乘法是两个矩阵直接相乘的地方.该操作将大小为[axb]的矩阵A与大小为[bxc]的矩阵B相乘,以产生大小为[axc]的矩阵C. 在OpenCV中,使用简单的*运算符实现:
C = A * B
Run Code Online (Sandbox Code Playgroud)
逐元素乘法是输出矩阵中的每个像素通过将矩阵A中的像素乘以矩阵B中的对应条目而形成的.输入矩阵应该是相同的大小,并且输出也将是相同的大小.这是使用以下mul()功能实现的:
output = A.mul(B);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
86600 次 |
| 最近记录: |