Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从全局姿势更改相对摄影机姿势_Python_Opencv_Computer Vision - Fatal编程技术网

Python 从全局姿势更改相对摄影机姿势

Python 从全局姿势更改相对摄影机姿势,python,opencv,computer-vision,Python,Opencv,Computer Vision,在OpenCV中,可以使用recoverPose功能从跟踪点估算相机的相对旋转和平移,但我试图找出是否可以使用相机在两个连续时间点的位置和方向(如TUM RGB-D数据集中的地面真实数据)执行类似操作其中,在每个时间戳,它们提供相机相对于全局坐标系的平移和方向 显然,可以简单地减去平移值以获得全局相对平移,但我想计算相机从一帧到下一帧的相对旋转和平移,以获得与recoverPose类似的结果 我的理解是(从)可以形成一个矩阵,通过4x4矩阵将世界坐标转换为摄像机坐标,其中上部3x3表示摄像机的全

在OpenCV中,可以使用
recoverPose
功能从跟踪点估算相机的相对旋转和平移,但我试图找出是否可以使用相机在两个连续时间点的位置和方向(如TUM RGB-D数据集中的地面真实数据)执行类似操作其中,在每个时间戳,它们提供相机相对于全局坐标系的平移和方向

显然,可以简单地减去平移值以获得全局相对平移,但我想计算相机从一帧到下一帧的相对旋转和平移,以获得与
recoverPose
类似的结果

我的理解是(从)可以形成一个矩阵,通过4x4矩阵将世界坐标转换为摄像机坐标,其中上部3x3表示摄像机的全局旋转,第4列表示摄像机从全局原点的平移。简单地通过矩阵乘法来解决我的问题是否有效,换句话说,计算C=AB',其中C是“相对变化”矩阵,A是第二帧的矩阵,B是第一帧的矩阵

我目前拥有的代码是

from pyquaternion import Quaternion
import numpy as np

quatA = Quaternion(x=x2, y=y2, z=z2, w=w2)
quatB = Quaternion(x=x1, y=y1, z=z1, w=w1)

matA = quatA.transformation_matrix
matA[0,3] = tx2
matA[1,3] = ty2
matA[2,3] = tz2

matB = quatB.transformation_matrix
matB[0,3] = tx1
matB[1,3] = ty1
matB[2,3] = tz1

matC = matA * np.linalg.inv(matB)
这段代码运行,但我不知道是否计算出有用的东西

如果这是完全错误的,那么使用OpenCV和Python实现这一点的最佳方法是什么