python中cv2.projectPoints的用法小結
我們先看一下c++ 中的參數解釋

第一個輸入的點是一個, (N, 3) 維的 三維坐標系中的點, xyz
第二個是旋轉向量,
第三個是平移向量.
第四個是相機內參,
第五個是相機的畸變系數, 如果輸入是4個時, 就是[k1, k2, p1, p2], 輸入5個時就是 [k1, k2, p1, p2, k3], 也可以是更多, [k1, k2, p1, p2, k3, k4, k5, k6]
實戰(zhàn)在python里面, 我用lidar的點往圖像上投影的時候是這么用的(lidar上的3d框, 即8個點.)
rotation = lidar2camera_pose[:3, :3]
translation = lidar2camera_pose[:3, 3]
dist = np.array(camera_disinfo)
imagePoints, _ = cv2.projectPoints(lidar_points, rotation, translation, camera_K, dist)
imagePoints = np.reshape(imagePoints, (8, 2))
maxrect = cv2.boundingRect(imagePoints.astype(int))但是這樣做無法把相機后面的點給排除掉, 所以可以這樣改
lidar_points = np.dot(lidar2camera_pose[:3, :3], lidar_points.T).T + lidar2camera_pose[:3, [3]].reshape(1, 3)
lidar_points = lidar_points[lidar_points[:, 2]>0]
if len(lidar_points) < 8:
return None
rotation = np.eye(3)
translation = np.zeros((3, 1))
dist = np.array(camera_disinfo)
imagePoints, flag = cv2.projectPoints(lidar_points, rotation, translation, camera_K, dist)
imagePoints = np.reshape(imagePoints, (8, 2))
maxrect = cv2.boundingRect(imagePoints.astype(int))到此這篇關于python中cv2.projectPoints的用法的文章就介紹到這了,更多相關python cv2.projectPoints用法內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

