C++ OpenCV:访问矩阵的值
我正在使用OpenCV函数decomposeHomographyMat()。因为我想分解我从OpenCV函数()得到的H1和H2矩阵 只是为了测试,我想将旋转和平移相乘,看看结果是否相同,是否一切正常C++ OpenCV:访问矩阵的值,c++,opencv,matrix,C++,Opencv,Matrix,我正在使用OpenCV函数decomposeHomographyMat()。因为我想分解我从OpenCV函数()得到的H1和H2矩阵 只是为了测试,我想将旋转和平移相乘,看看结果是否相同,是否一切正常 decomposeHomographyMat(H1, Mat(Identity), result_rot, result_trans, result_normals); Matx44f rotM(result_rot[id].at<float>(0,0), result_rot[id
decomposeHomographyMat(H1, Mat(Identity), result_rot, result_trans, result_normals);
Matx44f rotM(result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), 0,
result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), 0,
result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), result_rot[id].at<float>(0,0), 0,
0, 0, 0, 1);
Matx44f transM(1, 0, 0, result_trans[id].at<float>(0,0),
0, 1, 0, result_trans[id].at<float>(0,1),
0, 0, 1, result_trans[id].at<float>(0,2),
0, 0, 0, 1);
H1 = Mat(transM) * Mat(rotM);
值-0.015474273在原始旋转矩阵中不是偶数,值1似乎存储为-0.99892187。
我还尝试用double替换float,结果再次改变,但仍然不正确
我如何才能正确地获得存储在该矩阵中的正确值?这里出了什么问题 你可以打印
result\u rot.type()
?你的rotM
的所有索引都用result\u rot[id]填充。在
,这是打字错误吗?你可以打印result\u rot.type()
?你的rotM
的所有索引都用result\u rot[id]填充。在
,这是打字错误吗?
result_rot[id]: [0.9920521909211247, -0.1258265282306712, 0.0003678069998755973;
0.1258266147675855, 0.9920522232074044, -0.0002223635722913286;
-0.0003369043855492455, 0.0002668761040765017, 0.9999999076363849]
rotM: [-0.015474273, -0.015474273, -0.015474273, 0;
-0.015474273, -0.015474273, -0.015474273, 0;
-0.015474273, -0.015474273, -0.015474273, 0;
0, 0, 0, -0.99892187]