def __init__(self, intrinsic, trainer, cfg, mode=Theta.NonDual): # variables self.rv = np.asarray([], dtype=np.float32) # rotation self.tv = np.asarray([], dtype=np.float32) # translation self.mode = mode # load some configs self.half_fov = np.radians(cfg.camera_fov) / 2 pnp = cfg.pnp_flags # add SOLVEPNP_ prefix if not found if not pnp.startswith("SOLVEPNP_"): pnp = "SOLVEPNP_" + pnp # solvepnp flag if pnp in cv2.__dict__: self.pnp_flags = cv2.__dict__[pnp] else: print f, "is not found in cv2, reverting to Levenberg-Marquardt" self.pnp_flags = cv2.SOLVEPNP_ITERATIVE # open intrinsic, trainer files self.cam, self.distort = self.parseCamIntr(intrinsic) self.img_pts, self.obj_pts = self.parseTrainer(trainer) print "Camera Matrix\n", self.cam print "\nside:", Theta.name(mode) print "img_pts {}".format(len(self.img_pts)) print "obj_pts {}".format(len(self.obj_pts)) #calculate pose self.rv, self.tv = self.calPose() self.R = cv2.Rodrigues(self.rv)[0]