我需要构建一个产品运算符,它将两个任意大小的向量的乘积作为矩阵返回。
例如,带有u = [u1; u2; u3]
的产品v = [v1; v2; v3]
将是
u*v' = [u1*v1 u1*v2 u1*v3; u2*v1 u2*v2 u2*v3; u3*v1 u3*v2 u3*v3]
。
如何使用OpenCV使用 Matx
和 Vec
对象对任意大小的Vecs进行推广?
答案 0 :(得分:1)
根据documentation, Matx
适用于编译时已知类型和大小的小矩阵。
对于您的情况,您可以改为使用Mat
。
Mat u(n, 1, CV_32F);
Mat v(n, 1, CV_32F);
Mat res(n, n, CV_32F);
// compute here...
for (int i=0; i<res.rows; i++)
{
for (int j=0; j<res.cols; j++)
{
res.at<float>(i, j) = u.at<float>(i, 0) * v.at<float>(j, 0);
}
}