OpenCV推广矢量积以返回任意大小的Matrix

时间:2014-06-15 07:10:19

标签: c++ opencv

我需要构建一个产品运算符,它将两个任意大小的向量的乘积作为矩阵返回。

例如,带有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进行推广?

1 个答案:

答案 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);
    }
}