gpt4 book ai didi

opencv - OpenCV 中的矩阵乘法

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:44 24 4
gpt4 key购买 nike

我在 OpenCV 中有两个 Mat 图像:

Mat ft = Mat::zeros(src.rows,src.cols,CV_32FC1);
Mat h = Mat::zeros(src.rows,src.cols,CV_32FC1);

两幅图像具有相同的维度,并且是从单个源图像计算得出的。

我想将这两个图像相乘,但都尝试过使用它们

Mat multiply1 = h*ft;

Mat multiply2;
gemm(h,ft,1,NULL,0,multiply2);

但两者都会导致以下断言失败:

OpenCV Error: Assertion failed (a_size.width == len) in unknown function, file ...matmul.cpp Termination called after throwing 'cv::exception'

我做错了什么?

最佳答案

你说矩阵的维度相同,但你试图对它们执行矩阵乘法。具有相同维数的矩阵的乘法只有在它们是方阵时才有可能。在您的情况下,您会收到断言错误,因为尺寸不是正方形。矩阵相乘时必须小心,因为乘法有两种可能的含义。

Matrix multiplication 是两个矩阵直接相乘的地方。此操作将大小为 [a x b] 的矩阵 A 与大小为 [b x c] 的矩阵 B 相乘,生成大小为 [a x c] 的矩阵 C。在 OpenCV 中,它是使用简单的 * 运算符实现的:

C = A * B

Element-wise multiplication 输出矩阵中的每个像素都是通过将矩阵 A 中的该像素与其在矩阵 B 中的相应条目相乘而形成的。输入矩阵的大小应相同,输出矩阵的大小也应相同。这是使用 mul() 函数实现的:

output = A.mul(B);

关于opencv - OpenCV 中的矩阵乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10936099/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com