def ir_callback(self,data):
try:
self.ir_img = self.mkgray(data)
except CvBridgeError as e:
print(e)
ir_ret, ir_corners = cv2.findChessboardCorners(self.ir_img, (x_num,y_num))
cv2.namedWindow('ir_img', cv2.WINDOW_NORMAL)
cv2.imshow('ir_img',self.ir_img)
cv2.waitKey(5)
if ir_ret == True:
ir_tempimg = self.ir_img.copy()
cv2.cornerSubPix(ir_tempimg,ir_corners,(11,11),(-1,-1),criteria)
cv2.drawChessboardCorners(ir_tempimg, (x_num,y_num), ir_corners,ir_ret)
# ret, rvec, tvec = cv2.solvePnP(objpoints, corners, mtx, dist, flags = cv2.CV_EPNP)
ir_rvec, self.ir_tvec, ir_inliers = cv2.solvePnPRansac(objpoints, ir_corners, depth_mtx, depth_dist)
self.ir_rmat, _ = cv2.Rodrigues(ir_rvec)
print("The world coordinate system's origin in camera's coordinate system:")
print("===ir_camera rvec:")
print(ir_rvec)
print("===ir_camera rmat:")
print(self.ir_rmat)
print("===ir_camera tvec:")
print(self.ir_tvec)
print("ir_camera_shape: ")
print(self.ir_img.shape)
print("The camera origin in world coordinate system:")
print("===camera rmat:")
print(self.ir_rmat.T)
print("===camera tvec:")
print(-np.dot(self.ir_rmat.T, self.ir_tvec))
depth_stream = open("/home/chentao/kinect_calibration/ir_camera_pose.yaml", "w")
data = {'rmat':self.ir_rmat.tolist(), 'tvec':self.ir_tvec.tolist()}
yaml.dump(data, depth_stream)
cv2.imshow('ir_img',ir_tempimg)
cv2.waitKey(5)
get_extrinsics.py 文件源码
python
阅读 22
收藏 0
点赞 0
评论 0
评论列表
文章目录