我的工作,我需要跟蹤空中目標,並計算六個自由度的項目獲取使用cv2.solvePnP旋轉向量。的Kinect + OpenCV的:無法在python
我目前跟蹤彩色球,並計算其在rgb_frame中心,並利用中心值來查找depth_frame深度。
發現在真實世界共同ORDS的深度(Z)後,我計算真實世界X和使用等式Y:X =(Z U)/ fx和Y =(Z v)的/ fy,其中fx,fy是從kinect的內參數中獲得的焦距,u和v在這種情況下是中心的x,y值。
我治療(U,V),爲圖像點和(X,Y,Z)作爲圖像點和饋入此方法:solvePnP
obj_pts = np.array([[X,Y,Z]],np.float64)
img_pts = np.array([[u,v]],np.float64)
ret,rvecs,tvecs = cv2.solvePnP(obj_pts,img_pts,camera_matrix2,np_dist_coefs)
我期待找到我將用作輸入的rvecs:
cv2.Rodrigues(rvecs)
得到歐拉角,即俯仰,偏航,滾動。
我目前有與solvePnP電話,這給了我下面的錯誤問題:
/opencv-3.0.0/modules/calib3d/src/solvepnp.cpp:61:錯誤:(-215 )npoints> = 0 & & npoints ==的std :: MAX(ipoints.checkVector(2,CV_32F),ipoints.checkVector(2,CV_64F))在功能solvePnP
我也明白,僅發送該中心的對象並且不建議使用圖像點。這是我邁向實現的第一步。我打算使用像SIFT這樣的特徵檢測器來使它在後期變得更有趣。
任何人都可以請建議對我的做法,並幫助我完成找到六個自由度:
forward/back, up/down, left/right, pitch, yaw, roll
。