OpenCV--旋转向量与旋转矩阵相互转化
来源:互联网 发布:软件企业评估规范 编辑:程序博客网 时间:2024/05/17 23:41
处理三维旋转问题时,通常采用旋转矩阵的方式来描述。
一个向量乘以旋转矩阵等价于向量以某种方式进行旋转。
除了采用旋转矩阵描述外,还可以用旋转向量来描述旋转,旋转向量的长度(模)表示绕轴逆时针旋转的角度(弧度)。
旋转向量与旋转矩阵可以通过罗德里格斯(Rodrigues)变换进行转换。
算法过程如下:
式中,norm为求向量的模。反变换也可以很容易的通过如下公式实现:
OpenCV实现Rodrigues变换的函数为
int cvRodrigues2( const CvMat* src, CvMat* dst, CvMat* jacobian=0 );
src为输入的旋转向量(3x1或者1x3)或者旋转矩阵(3x3)。
dst为输出的旋转矩阵(3x3)或者旋转向量(3x1或者1x3)。
jacobian为可选的输出雅可比矩阵(3x9或者9x3),是输入与输出数组的偏导数。
#include <stdio.h>#include <cv.h>void main(){ int i; double r_vec[3]={-2.100418,-2.167796,0.273330}; double R_matrix[9]; CvMat pr_vec; CvMat pR_matrix; cvInitMatHeader(&pr_vec,1,3,CV_64FC1,r_vec,CV_AUTOSTEP); cvInitMatHeader(&pR_matrix,3,3,CV_64FC1,R_matrix,CV_AUTOSTEP); cvRodrigues2(&pr_vec, &pR_matrix,0); for(i=0; i<9; i++) { printf("%f\n",R_matrix[i]); }}
C++: void Rodrigues(InputArray src, OutputArray dst, OutputArray jacobian=noArray())
- OpenCV--旋转向量与旋转矩阵相互转化
- 旋转向量与旋转矩阵相互转化
- OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化
- OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化
- OpenCV学习笔记(一)——旋转向量与旋转矩阵相互转化
- 旋转矩阵及旋转向量相互转化 Rodrigues矩阵
- OpenCV 旋转向量与旋转矩阵转化(罗德里格斯 )
- OpenCV 旋转向量与旋转矩阵转化(罗德里格斯 )
- openCV---旋转向量转旋转矩阵
- 旋转向量-旋转矩阵
- 旋转矩阵和旋转向量
- 欧拉角与旋转矩阵的互相转化
- Eigen库使用教程之旋转矩阵,旋转向量和四元数的初始化和相互转换的实现
- 旋转向量与旋转矩阵的联系、点乘点积的意义、飞机的姿态角
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 旋转矩阵与四元数
- 润乾 图形钻取后隐藏地址栏中的传递的参数
- xcode 代码颜色高亮,智能提示的问题以及解决方法
- linux中fork()函数详解
- Linux netstat命令详解
- 一个死循环
- OpenCV--旋转向量与旋转矩阵相互转化
- NopCommerce用到的开源组件
- 使用 Fabrik 组件为 Joomla 创建一个简单的留言板
- [Android] 设置控件是否可见
- Linux进程间通信
- 电路中“地”之深究——克服电磁干扰
- iframe自学整理
- Cocos2dx------touch事件
- DTFT和DFT有什么区别?(有空了再写)