处理矩阵三维转换时,通常采用旋转矩阵,但是旋转变换其实只有三个自由度,用旋转向量表达时更为简洁。因此,需要实现从旋转向量和旋转矩阵之间的互转换。
opencv中的Rodrigues函数实现,函数原型:
void Rodrigues( InputArray src, OutputArray dst, OutputArray jacobian = noArray() );
参数:
输入src:旋转向量(31或者13)或者旋转矩阵(33);
输出dst:旋转矩阵(33)或者旋转向量(31或者13);
输出jacobin:可选项,输出雅克比矩阵(39或者93),输入数组对输出数组的偏导数。
Mat rot_vec = Mat::zeros(1,3,CV_32F);
rot_vec.at(0,0) += CV_PI * 0.01f;
rot_vec.at(0,1) += CV_PI * 0.01f;
rot_vec.at(0,2) += CV_PI * 0.01f;
Mat rot_mat;
Rodrigues(rot_vec, rot_mat);