Tag: 姿态估计

在cv :: solvePnP的世界坐标中的摄像机位置

我有一个校准摄像机(固有的matrix和失真系数),我想知道相机的位置知道一些3d点和它们在图像中的相应点(2d点)。 我知道cv::solvePnP可以帮助我,读完这个后 ,我明白了solvePnP rvec和tvec的输出是摄像机坐标系中对象的旋转和平移。 所以我需要找出世界坐标系下的相机旋转/平移。 从上面的链接看来,代码很简单,在python中: found,rvec,tvec = cv2.solvePnP(object_3d_points, object_2d_points, camera_matrix, dist_coefs) rotM = cv2.Rodrigues(rvec)[0] cameraPosition = -np.matrix(rotM).T * np.matrix(tvec) 我不知道Python / numpy的东西(我正在使用C ++),但是这对我来说并没有什么意义: rvec,solvePnP的tvec输出是3x1matrix,3个元素的向量 cv2.Rodrigues(rvec)是一个3x3matrix cv2.Rodrigues(rvec)[0]是一个3x1matrix,3个元素向量 cameraPosition是一个3×1 * 1x3matrix乘法,即一个.. 3x3matrix。 我怎么可以在opengl中使用简单的glTranslatef和glRotate调用?

如果已知外部和内部参数,则从2D图像像素获取3D坐标

我正在做tsai algo的相机校准。 我得到了内在和外在的matrix,但是我怎样才能从这个信息中重build三维坐标呢? 1)我可以使用高斯消去来findX,Y,Z,W,然后点将是X / W,Y / W,Z / W作为同质系统。 2)我可以使用OpenCV文档方法: 因为我知道u , v , R , t ,我可以计算X,Y,Z 。 但是,这两种方法的结果都不一样,不正确。 我在做什么错了?