变换四元数相机旋转矩阵- OpenCV
Transforming Quaternion to Camera rotation matrix - OpenCV
几周以来我一直试图用精确的四元数来扭曲几张照片,但没有运气。下面的方程式似乎没有旋转相机的位置,以及我期望从确切的位置。我做得对吗?我是不是漏掉了什么?
我明白,简单地传递一个四元数是不足以缝合照片,但它应该足以对齐照片?
公式如下:
double divmult = 2.0 / lsq;
double xx = divmult * x * x;
double yy = divmult * y * y;
double zz = divmult * z * z;
double wx = divmult * w * x;
double wy = divmult * w * y;
double wz = divmult * w * z;
double xy = divmult * x * y;
double xz = divmult * x * z;
double yz = divmult * y * z;
cameras_global[imageCounter].R = (Mat_<float>(3, 3) << ( 1 - yy - zz ), -( xy - wz ), -( xz + wy ),
( xy + wz ), -( 1 -xx -zz ), -( yz - wx ),
( xz - wy ), -( yz + wx ), -( 1 -xx -yy ) );
OpenCV不直接支持四元数。与其修正你的计算,我宁愿采用一个更简单的转换。它所拥有的最接近的东西是表示3D旋转的轴角向量(也称为罗德里格斯角)。我将转换成轴角,然后将轴乘以角度得到罗德里格斯角。之后,您可以使用OpenCV的内置函数,例如cv::Rodrigues转换为3x3旋转矩阵。
相关文章:
- 在C++中使用OpenCV矩阵中的特征将图像旋转90度
- 从iPhone相机拍摄的视频似乎被OpenCV旋转了90度?我该如何解决这个问题?
- OpenCV:按一定角度旋转点:溶液中的偏移/偏移
- 如何使用OpenCV从图像中检测旋转对象
- OpenCV 检测多个旋转的缩放对象
- openCV等应角旋转
- 如何从OpenCV rvecs计算旋转角度
- Android OpenCV - 每次旋转是否有可能捕捉到不同的3D对象点击?
- OpenCV 计算相机位置和旋转
- 将OpenCV旋转和平移矢量转换为XYZ旋转和XYZ位置
- 旋转OpenCV中的箭头
- 旋转直接与rect或旋转的openCV的交点
- 如何在OpenCV中获取旋转矩形的顶点
- 无法根据opencv旋转矩形教程获得相同的图像结果
- OpenCV从T形主体获得360度旋转
- 如何使用OpenCV计算两帧之间的旋转平移矩阵
- OpenCV:来自分解同源异构图的奇怪旋转和平移矩阵
- 帧之间的 OpenCV 平移/旋转位移
- OpenCV立体声校准旋转矩阵
- opencv:使用旋转和平移向量设置模型位置