为什么OpenCV Mats相乘时结果不同?

问题描述 投票:0回答:1

这是一个 4x4 变换矩阵 Mat。

1.000, 0.000, -0.004, 0.784,
-0.000, 1.000, 0.001, -0.205,
0.004、-0.001、1.000、-1.435、
0.000、0.000、0.000、1.000

这是一个 3 维向量

507.347,359.172,229.584

我执行了OpenCV Mat乘法运算如下

双数据[] = { 507.347, 359.172, 229.584, 1 };

cv::Mat s(4, 1, CV_64F, 数据);
cv::Mat d = 变换矩阵 * s;

输出结果如下,但与计算器计算的值不同。

OpenCV Mat 相乘结果 = 矩阵 * (507.347,359.172,229.584) = (507.394,359.158,229.605)

计算结果 = 507.213, 359.197, 230.538

为什么结果不同?代码有问题吗?

opencv mat
1个回答
0
投票

我尝试了这段代码(C++):

cv::Matx<double,4,4> M =
{
    1.000, 0.000, -0.004, 0.784,
    -0.000, 1.000, 0.001, -0.205,
    0.004, -0.001, 1.000, -1.435,
    0.000, 0.000, 0.000, 1.000
};

double data[] = { 507.347, 359.172, 229.584, 1 };
cv::Mat s(4, 1, CV_64F, data);

auto Result = M * s;
std::cout << Result;

但是,输出变成:

[507.212664;
 359.196584;
 229.819216;
 1]

无法重现您的结果。

© www.soinside.com 2019 - 2024. All rights reserved.