Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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_Camera Calibration - Fatal编程技术网

Python 三维到二维图像的摄像机标定和点投影

Python 三维到二维图像的摄像机标定和点投影,python,opencv,computer-vision,camera-calibration,Python,Opencv,Computer Vision,Camera Calibration,我正在尝试将一个三维点从点云投影到二维全景图像。我已经在2D图像上手动拾取了8个点和相应的3D点云点,并使用OpenCV库查找相机矩阵、平移和旋转向量,然后在投影方法中使用这些向量 #initial camera matrix camera_matrix = cv2.initCameraMatrix2D([objectPoints_3D],[imagePoints_2D], image_size_2D) #calibrate cameras intrinsics_error, intrinsi

我正在尝试将一个三维点从点云投影到二维全景图像。我已经在2D图像上手动拾取了8个点和相应的3D点云点,并使用OpenCV库查找相机矩阵、平移和旋转向量,然后在投影方法中使用这些向量

#initial camera matrix
camera_matrix = cv2.initCameraMatrix2D([objectPoints_3D],[imagePoints_2D], image_size_2D)

#calibrate cameras
intrinsics_error, intrinsic_matrix, intrinsics_distortion_coeffs, rotation_vectors, translation_vectors = cv2.calibrateCamera([objectPoints_3D], [imagePoints_2D], image_size_2D, camera_matrix, None, flags=cv2.CALIB_USE_INTRINSIC_GUESS) #camera_matrix and intrinsic_matrix are the same

#project a 3D point in the pointcloud onto a 2D image
projected_point_2D = cv2.projectPoints(selected_point_3D, rotation_vectors[0], translation_vectors[0], intrinsic_matrix, intrinsics_distortion_coeffs)
对于校准时使用的同一图像,
投影的_点_2D
似乎合理,但在另一组2D和3D图像中失败。我做错了吗


图像包含建筑物和树木

的作用正好相反:给定某个坐标系中的3D点(以及相机内部校准和相机相对于坐标系的旋转/平移),它将返回图像平面中的2D点。在图像+相机校准中,如果给定一个2D点,您可能希望获得3D点位置。但该信息仅足以获得射线;要获得一个点,您还需要知道深度。@vasiliykarasev my bad,将要进行更改,感谢您发现此点。您需要更多的校准点。不确定这是否适用于全景,因为该图像可能根本不符合针孔相机模型all@Micka但是为什么我在校准过程中使用的相同2D-3D图片对会得到合理的结果?因为您的校准针对这些图片对进行了优化。顺便说一句,我不完全确定您在校准期间做了什么,您能展示一些用于校准的全景图像样本吗?您是否有固定缝合或一次性全景缝合(例如从关键点)的实时系统?执行相反的操作:给定某个坐标帧中的3D点(以及相机内部校准和相机相对于坐标帧的旋转/平移),它将返回图像平面中的2D点。在图像+相机校准中,如果给定一个2D点,您可能希望获得3D点位置。但该信息仅足以获得射线;要获得一个点,您还需要知道深度。@vasiliykarasev my bad,将要进行更改,感谢您发现此点。您需要更多的校准点。不确定这是否适用于全景,因为该图像可能根本不符合针孔相机模型all@Micka但是为什么我在校准过程中使用的相同2D-3D图片对会得到合理的结果?因为您的校准针对这些图片对进行了优化。顺便说一句,我不完全确定您在校准期间做了什么,您能展示一些用于校准的全景图像样本吗?您是否有固定缝合或一次性全景缝合(例如从关键点)的实时系统?