C++ OpenCV:访问矩阵的值

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

我正在使用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].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]