这是一个 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
为什么结果不同?代码有问题吗?
我尝试了这段代码(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]
无法重现您的结果。