这里需要注意的是 Matlab 标定结果 中的 om 向量,这 个向量是旋转 矩阵通过
Rodrigues 变换之后得出的结果,如果要在 cvStereoRectify 中使用的话,需要首先将
这个向量用 cvRodrigues 转换成旋转矩阵。关于 Rodrigues 变换,Learning OpenCV
的第 11 章也有说明。也可以直接用 Matlab 标定结果中的 R(3*3)向量 R(3*3)向量
为 OM(1*3)向量转换后的结果
转换代码如下:
#include <stdio.h>
#include<opencv2\opencv.hpp>
void main()
{
int i;
double r_vec[3] = { -0.0101, -0.0065, -0.0122 };
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);
评论