ETH-XGaze
ETH-XGaze copied to clipboard
cam_id or solvePnPRansac issue
Hello, I caught this problem:
In demo.py if I use HeadPoseEstimator() instead of estimateHeadPose() this error occures:
--> 29 hr, ht, o_l, o_r, _ = head_pose_estimator(image, landmarks, camera_matrix[cam_id])
30 ## the easy way to get head pose information, fast and simple
31 # facePts = face_model.reshape(6, 1, 3)
NameError: name 'cam_id' is not defined
If I replace camera_matrix[cam_id]
with camera_matrix
this problem occures:
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-13-a4e70c1ea3f5> in <module>
27 landmarks = landmarks.reshape(-1, 2)
28 head_pose_estimator = HeadPoseEstimator()
---> 29 hr, ht, o_l, o_r, _ = head_pose_estimator(image, landmarks, camera_matrix)
30 ## the easy way to get head pose information, fast and simple
31 # facePts = face_model.reshape(6, 1, 3)
~/ETH-XGaze/head_pose.py in __call__(self, frame, landmarks, intrinsics, target_io_dist, visualize)
136 # Do PnP-based head pose fitting
137 rvec, tvec, reprojected_points, o_l, o_r, face_model = \
--> 138 self.head_pose_fit(landmarks, eos_mesh, intrinsics, scaling_factor)
139 o_r_2D = cv.projectPoints(o_r, rvec, tvec, intrinsics, None)[0].reshape(2)
140 o_l_2D = cv.projectPoints(o_l, rvec, tvec, intrinsics, None)[0].reshape(2)
~/ETH-XGaze/head_pose.py in head_pose_fit(self, landmarks_2D, deformed_mesh, intrinsics, scaling_factor)
95 # Initial fit
96 camera_matrix = intrinsics
---> 97 success, rvec, tvec, inliers = cv.solvePnPRansac(
98 sfm_points_ibug_subset, landmarks_2D, camera_matrix, None,
99 flags=cv.SOLVEPNP_EPNP)
error: OpenCV(4.5.2) /tmp/pip-req-build-dccdjyga/opencv/modules/calib3d/src/solvepnp.cpp:241: error: (-215:Assertion failed) npoints >= 4 && npoints == std::max(ipoints.checkVector(2, CV_32F), ipoints.checkVector(2, CV_64F)) in function 'solvePnPRansac'
could you please help?