Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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 OpenCV:如何从calibleCamera()输出中找到投影矩阵?_Python_Opencv_Matrix_Computer Vision_Vision - Fatal编程技术网

Python OpenCV:如何从calibleCamera()输出中找到投影矩阵?

Python OpenCV:如何从calibleCamera()输出中找到投影矩阵?,python,opencv,matrix,computer-vision,vision,Python,Opencv,Matrix,Computer Vision,Vision,我能够使用Python中的OpenCV计算相机校准。然而,我真正需要的是投影矩阵。查看文档中的方程,看起来这是P=K[R | T],其中K是固有矩阵,R是旋转矩阵,T是平移向量。这是我用来计算投影矩阵的代码: ret, matrix, distCoef, rvecs, tvecs = cv2.calibrateCamera([world_points], [corners], gray.shape[::-1], flags=cv2.CALIB_USE_INTRINSIC_GUESS) K =

我能够使用Python中的OpenCV计算相机校准。然而,我真正需要的是投影矩阵。查看文档中的方程,看起来这是
P=K[R | T]
,其中K是固有矩阵,R是旋转矩阵,T是平移向量。这是我用来计算投影矩阵的代码:

ret, matrix, distCoef, rvecs, tvecs = cv2.calibrateCamera([world_points], [corners], gray.shape[::-1], flags=cv2.CALIB_USE_INTRINSIC_GUESS)

K = matrix
R = cv2.Rodrigues(rvecs[0])[0]
T = tvecs[0]
RT = np.concatenate((R,T),axis=1)
P = np.dot(K, RT)
这是正确的吗?据我所知,我应该能够通过执行P*[x;y;z;1]来检查它,其中(x,y,z)是一个世界点,输出应该是相应的像素坐标。我试过了,但是输出看起来很错误。这是否意味着这是一个错误的校准,还是我构造的P不正确?

我想我已经修复了它——事实证明,我给CalibleCamera()提供了一些错误的参数。我重写的代码主要基于OpenCV samples文件夹附带的calibrate.py。我遵循了我在原始帖子中提到的其他概念(构造P、检查重投影错误等),现在它给了我更合理的结果