c++ - 旋转矩阵不是真正对称的(OpenCV)

标签 c++ opencv rotation position orientation

我在 OpenCV 中使用 recoverPose() 函数,但我没有得到对称旋转矩阵。
它不应该返回一个对称旋转矩阵吗?

我的结果看起来像:

R =  0.998585723955729,   0.02348487299776981,  0.04769709270061936;
    -0.02232705043463718, 0.9994464428542043,  -0.02466395517687959, 
    -0.04824991948907295, 0.02356413814160357,  0.9985572976364158;

t = -0.9982022017535427,  
     0.005659929033547541, 
     0.05966849769949602;

如您所见,旋转矩阵并不是真正对称的,而且值的符号也有一些“错误”。

这些都是图片:

image1 image2

最佳答案

一般来说,3D 旋转矩阵是不对称的。 (尽管有些是,例如单位矩阵满足旋转矩阵的性质并且是对称的)。实际上,除了微不足道的一维情况外,一般的非对称性对于任何数量的维度都是正确的。

你可以在 https://en.wikipedia.org/wiki/Rotation_matrix 看到 3D 旋转矩阵的一般形式

(请注意,旋转矩阵的行列式始终为 1)。

关于c++ - 旋转矩阵不是真正对称的(OpenCV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42861264/

相关文章:

android - 在 Android 中翻转两个面的硬币

c++ - 候选模板被忽略 : substitution failure(error with clang but not g++)

c# - 如何在 C# 中使用 struct 和 union

opencv - 将 cv::Mat 的旋转和平移连接到特征值

python - AttributeError: 'module'对象没有属性 'cv'

azure - 如何在 Azure 中 key 轮换后满足客户端对存储 Blob 的请求

c++ - 将无父场景项置于另一个场景项下

C++ 智能指针 const 正确性

c++ - C++中基于时区的时间

python - 有没有一种方法可以检查是否在没有cap = cv2.videocapture的情况下连接了摄像机