首页 > 解决方案 > 使用 OpenCV 从已知坐标的点中查找相机的位置

问题描述

This question is like this one,但我找不到我的问题所在。我正在尝试使用 openCV 的相机 calibrateCamera 来查找相机的位置,在这种情况下,使用跑道角的已知位置在飞机上:

import cv2
objectPoints=np.array([[posA,posB,posC,posD]], dtype='float32')
imagePoints=np.array([[R0,R1,L1,L0]],dtype='float32')
imageSize=(1152,864)
retval, cameraMatrix, distCoeffs, rvecs, tvecs = cv2.calibrateCamera(objectPoints, imagePoints, imageSize, None, None)

#rotation matrix
R_mtx, jac = cv2.Rodrigues(np.array(rvecs).T)

cameraPosition = -np.matrix(R_mtx).T * np.matrix(tvecs[0])

cameraPosition

其中 [R0,R1,L1,L0] 是图像上以像素为单位的角点位置,[posA,posB,posC,posD] 是跑道在现实世界中的位置。我得到这个代码的答案:

matrix([[ -4.7495336 ], #x
        [936.21932548], #y
        [-40.56147483]]) #z

当我应该得到类似的东西时:

#[x,y,z]
[-148.4259877253941, -1688.345610364497, 86.58536585365854]

标签: opencvopencv-python

解决方案


推荐阅读