Exemple #1
0
    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])
Exemple #3
0
    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
Exemple #4
0
    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}