def __init__(self, max_tracked_objects=30, dt_prediction=0.05, gsd=1, origin_coordinate=[0, 0], in_events_topic="/multi_tracker/global_events", in_status_topic="/multi_tracker/status", in_window_topic="/multi_tracker/window", out_kalman_topic="/multi_tracker/pos", in_frames_topic="/homography_output", out_frames_topic="/out", out_kalman_frames_topic=None): KalmanMultiTrackerReceiver.__init__( self, max_tracked_objects=max_tracked_objects, dt_prediction=dt_prediction, in_events_topic=in_events_topic, in_status_topic=in_status_topic, in_window_topic=in_window_topic, out_kalman_topic=out_kalman_topic, in_frames_topic=in_frames_topic, out_frames_topic=out_kalman_frames_topic) self.gsd = gsd self.origin_coordinate = origin_coordinate self.frames_sub = ROSImageStream(sub_topic_name=in_frames_topic) self.frames_pub = ROSImageStream(pub_topic_name=out_frames_topic) self.cars = {} self.cars_lock = threading.Lock() self.last_id = 0
def __init__(self): self.t = None self.last_frame = None self.track_window = None self.s = ROSImageStream(sub_topic_name=args.i) self.p = ROSImageStream(pub_topic_name=args.o) self.pre_tracker = PreTracker() self.pre_tracker.set_color_range(((0,0,0),(10,10,10))) self.pre_tracker.set_pre_track_callbacks([self.pre_tracker.pre_track_color_range])
def __init__(self, in_topic=None, in_bag=None, processed_frame_topic=None): self.pre_track_callbacks = [] if in_topic != None: self.stream_frame = ROSImageStream(sub_topic_name=in_topic, in_bag_name=in_bag) if processed_frame_topic != None: self.stream_processed_frame = ROSImageStream( pub_topic_name=processed_frame_topic) else: self.stream_processed_frame = None
def start( self, loop=True ): if self.in_frames_topic is not None and self.out_frames_topic is not None: self.pub = ROSImageStream(pub_topic_name=self.out_frames_topic) self.sub = ROSImageStream(sub_topic_name=self.in_frames_topic) self.sub.img_stream_subscribe( callback=self.publish_frame, loop=False ) self.multi_tracker_receiver.start(loop=loop)
def __init__( self, tracker_type=CamshiftTracker, # MeanshiftTracker, CamshiftTracker cnt_min_area=500, window_max_width=None, lost_ttl_attempts=10, max_tracked_objects=30, overlap_margin=25, allowed_directions=['n', 's', 'e', 'w'], pre_tracker=None, in_frames_topic="/img_stream", out_events_topic="/multi_tracker/global_events", out_status_topic="/multi_tracker/status", out_window_topic="/multi_tracker/window", in_kalman_topic="/multi_tracker/pos", out_frames_topic="/multi_tracker/tracked_frames"): self.tracker_type = tracker_type self.cnt_min_area = cnt_min_area self.window_max_width = window_max_width self.lost_ttl_attempts = lost_ttl_attempts self.max_tracked_objects = max_tracked_objects self.overlap_margin = overlap_margin self.allowed_directions = allowed_directions if pre_tracker == None: self.pre_tracker = PreTracker( ) #processed_frame_topic="/pre_tracked_frame") self.pre_tracker.set_color_range(color_range=((0, 0, 0), (20, 20, 20))) self.pre_tracker.set_median_blur(7) self.pre_tracker.set_pre_track_callbacks([ self.pre_tracker.pre_track_color_range, self.pre_tracker.pre_track_median_blur ]) else: self.pre_tracker = pre_tracker self.in_frames_topic = in_frames_topic self.out_events_topic = out_events_topic self.out_status_topic = out_status_topic self.out_window_topic = out_window_topic self.in_kalman_topic = in_kalman_topic self.out_frames_topic = out_frames_topic self.frames_img_stream = ROSImageStream( sub_topic_name=self.in_frames_topic) self.kalman_sub = rospy.Subscriber(self.in_kalman_topic, Window, callback=self.kalman_pos_callback, queue_size=self.max_tracked_objects) if self.out_frames_topic != None: self.out_frames_pub = ROSImageStream( pub_topic_name=self.out_frames_topic) else: selt.out_frames_pub = None self.tracked_objects = TrackedObjects( out_status_topic=self.out_status_topic, out_window_topic=self.out_window_topic, out_events_topic=self.out_events_topic, max_tracked_objects=self.max_tracked_objects, max_ttl=self.lost_ttl_attempts) self.trackers = {} # {"id": tracker_type}