def __init__(self, node_name): ROS2OpenCV.__init__(self, node_name) self.node_name = node_name self.auto_face_tracking = rospy.get_param("~auto_face_tracking", True) self.use_haar_only = rospy.get_param("~use_haar_only", False) self.use_depth_for_detection = rospy.get_param( "~use_depth_for_detection", False) self.fov_width = rospy.get_param("~fov_width", 1.094) self.fov_height = rospy.get_param("~fov_height", 1.094) self.max_face_size = rospy.get_param("~max_face_size", 0.28) self.use_depth_for_tracking = rospy.get_param( "~use_depth_for_tracking", False) self.auto_min_features = rospy.get_param("~auto_min_features", True) self.min_features = rospy.get_param( "~min_features", 50) # Used only if auto_min_features is False self.abs_min_features = rospy.get_param("~abs_min_features", 6) self.std_err_xy = rospy.get_param("~std_err_xy", 2.5) self.pct_err_z = rospy.get_param("~pct_err_z", 0.42) self.max_mse = rospy.get_param("~max_mse", 10000) self.good_feature_distance = rospy.get_param("~good_feature_distance", 5) self.add_feature_distance = rospy.get_param("~add_feature_distance", 10) self.flip_image = rospy.get_param("~flip_image", False) self.feature_type = rospy.get_param( "~feature_type", 0) # 0 = Good Features to Track, 1 = SURF self.expand_roi_init = rospy.get_param("~expand_roi", 1.02) self.expand_roi = self.expand_roi_init self.camera_frame_id = "kinect_depth_optical_frame" self.cog_x = self.cog_y = 0 self.cog_z = -1 self.detect_box = None self.track_box = None self.features = [] self.grey = None self.pyramid = None self.small_image = None """ Set up the face detection parameters """ self.cascade_frontal_alt = rospy.get_param("~cascade_frontal_alt", "") self.cascade_frontal_alt2 = rospy.get_param("~cascade_frontal_alt2", "") self.cascade_profile = rospy.get_param("~cascade_profile", "") self.cascade_frontal_alt = cv.Load(self.cascade_frontal_alt) self.cascade_frontal_alt2 = cv.Load(self.cascade_frontal_alt2) self.cascade_profile = cv.Load(self.cascade_profile) self.min_size = (20, 20) self.image_scale = 2 self.haar_scale = 1.5 self.min_neighbors = 1 self.haar_flags = cv.CV_HAAR_DO_CANNY_PRUNING self.grey = None self.pyramid = None """ Set the Good Features to Track and Lucas-Kanade parameters """ self.night_mode = False self.quality = 0.01 self.win_size = 10 self.max_count = 200 self.block_size = 3 self.use_harris = False self.flags = 0 self.frame_count = 0 """ Set the SURF parameters """ self.surf_hessian_quality = rospy.get_param("~surf_hessian_quality", 100) """ A service to handle 'keystroke' commands sent from other nodes """ self.key_command = None rospy.Service('~key_command', KeyCommand, self.key_command_callback) """ A service to allow setting the ROI to track """ rospy.Service('~set_roi', SetROI, self.set_roi_callback) """ Wait until the image topics are ready before starting """ rospy.wait_for_message(self.input_rgb_image, Image) if self.use_depth_for_detection or self.use_depth_for_tracking: rospy.wait_for_message(self.input_depth_image, Image)
def __init__(self, node_name): ROS2OpenCV.__init__(self, node_name) self.node_name = node_name self.auto_face_tracking = rospy.get_param("~auto_face_tracking", True) self.use_haar_only = rospy.get_param("~use_haar_only", False) self.use_depth_for_detection = rospy.get_param("~use_depth_for_detection", False) # Classic Kinnect FOV is 57.8° = 1.008 radians self.fov_width = rospy.get_param("~fov_width", 1.094) self.fov_height = rospy.get_param("~fov_height", 1.094) self.max_face_size = rospy.get_param("~max_face_size", 0.28) self.use_depth_for_tracking = rospy.get_param("~use_depth_for_tracking", False) self.auto_min_features = rospy.get_param("~auto_min_features", True) self.min_features = rospy.get_param("~min_features", 50) # Used only if auto_min_features is False self.abs_min_features = rospy.get_param("~abs_min_features", 6) self.std_err_xy = rospy.get_param("~std_err_xy", 2.5) self.pct_err_z = rospy.get_param("~pct_err_z", 0.42) self.max_mse = rospy.get_param("~max_mse", 10000) self.good_feature_distance = rospy.get_param("~good_feature_distance", 5) self.add_feature_distance = rospy.get_param("~add_feature_distance", 10) self.flip_image = rospy.get_param("~flip_image", False) self.feature_type = rospy.get_param("~feature_type", 0) # 0 = Good Features to Track, 1 = SURF self.expand_roi_init = rospy.get_param("~expand_roi", 1.02) self.expand_roi = self.expand_roi_init self.camera_frame_id = "kinect_depth_optical_frame" self.cog_x = self.cog_y = 0 self.cog_z = -1 self.detect_box = FacesRegistry() self.track_box = None self.features = [] self.grey = None self.pyramid = None self.small_image = None self.frame_count = 0 """ Set up the face detection parameters """ self.cascade_frontal_alt = rospy.get_param("~cascade_frontal_alt", "") # optional for Face detection self.cascade_frontal_alt2 = rospy.get_param("~cascade_frontal_alt2", False) self.cascade_profile = rospy.get_param("~cascade_profile", False) self.cascade_frontal_alt = cv.Load(self.cascade_frontal_alt) if self.cascade_frontal_alt2: self.cascade_frontal_alt2 = cv.Load(self.cascade_frontal_alt2) if self.cascade_profile: self.cascade_profile = cv.Load(self.cascade_profile) self.min_size = (20, 20) self.image_scale = 2 self.haar_scale = 1.2 self.min_neighbors = 1 self.haar_flags = cv.CV_HAAR_DO_CANNY_PRUNING self.grey = None self.pyramid = None """ Set the Good Features to Track and Lucas-Kanade parameters """ self.night_mode = False self.quality = 0.01 self.win_size = 10 self.max_count = 200 self.block_size = 3 self.use_harris = False self.flags = 0 """ Set the SURF parameters """ self.surf_hessian_quality = rospy.get_param("~surf_hessian_quality", 100) """ A service to handle 'keystroke' commands sent from other nodes """ self.key_command = None rospy.Service('~key_command', KeyCommand, self.key_command_callback) """ Wait until the image topics are ready before starting """ rospy.wait_for_message(self.input_rgb_image, Image) if self.use_depth_for_detection or self.use_depth_for_tracking: rospy.wait_for_message(self.input_depth_image, Image)
def __init__(self, node_name): ROS2OpenCV.__init__(self, node_name) self.node_name = node_name self.auto_face_tracking = rospy.get_param("~auto_face_tracking", True) self.use_haar_only = rospy.get_param("~use_haar_only", False) self.use_depth_for_detection = rospy.get_param("~use_depth_for_detection", False) self.fov_width = rospy.get_param("~fov_width", 1.094) self.fov_height = rospy.get_param("~fov_height", 1.094) self.max_face_size = rospy.get_param("~max_face_size", 0.28) self.use_depth_for_tracking = rospy.get_param("~use_depth_for_tracking", False) self.auto_min_features = rospy.get_param("~auto_min_features", True) self.min_features = rospy.get_param("~min_features", 50) # Used only if auto_min_features is False self.abs_min_features = rospy.get_param("~abs_min_features", 6) self.std_err_xy = rospy.get_param("~std_err_xy", 2.5) self.max_mse = rospy.get_param("~max_mse", 10000) self.good_feature_distance = rospy.get_param("~good_feature_distance", 5) self.add_feature_distance = rospy.get_param("~add_feature_distance", 10) self.flip_image = rospy.get_param("~flip_image", False) self.feature_type = rospy.get_param("~feature_type", 0) # 0 = Good Features to Track, 1 = SURF self.expand_scale = 1.1 self.detect_box = None self.track_box = None self.features = [] self.grey = None self.pyramid = None """ Set up the face detection parameters """ self.cascade_frontal_alt = rospy.get_param("~cascade_frontal_alt", "") self.cascade_frontal_alt2 = rospy.get_param("~cascade_frontal_alt2", "") self.cascade_profile = rospy.get_param("~cascade_profile", "") self.cascade_frontal_alt = cv.Load(self.cascade_frontal_alt) self.cascade_frontal_alt2 = cv.Load(self.cascade_frontal_alt2) self.cascade_profile = cv.Load(self.cascade_profile) self.min_size = (20, 20) self.image_scale = 2 self.haar_scale = 1.5 self.min_neighbors = 1 self.haar_flags = cv.CV_HAAR_DO_CANNY_PRUNING self.grey = None self.pyramid = None """ Set the Good Features to Track and Lucas-Kanade parameters """ self.night_mode = False self.quality = 0.01 self.win_size = 10 self.max_count = 200 self.flags = 0 self.frame_count = 0 """ Set the SURF parameters """ self.surf_hessian_quality = rospy.get_param("~surf_hessian_quality", 100) """ Wait until the image topics are ready before starting """ rospy.wait_for_message(self.input_rgb_image, Image) if self.use_depth_for_detection or self.use_depth_for_tracking: rospy.wait_for_message(self.input_depth_image, Image)