def METHOD_NAME(self):
    while self.x is None:
        cv2.waitKey(33)
    image = self.crawl.next()
    self.image = self.bridge.imgmsg_to_cv2(image, "bgr8")
    doing = False
    pause = True
    while True:
        if doing:
            continue
        doing = True
        k = chr(cv2.waitKey(50) & 0xFF)
        if k == "q":
            break
        elif k == " ":
            pause = not pause
        elif not pause and not self.rclk:
            try:
                image = self.crawl.next()
                self.image = self.bridge.imgmsg_to_cv2(image, "bgr8")
            except StopIteration:
                break
            remove = []
            for name in self.rects:
                bbox = self.roi_to_tracker[name].track(self.image)
                if bbox is None or self.out_range(bbox):
                    remove.append(name)
                else:
                    self.rects[name] = [bbox[0], bbox[1], bbox[2], bbox[3]]
            for name in remove:
                self.rects.pop(name)
                self.roi_to_tracker.pop(name)
            newrects = {}
            for r in self.rects:
                coords = self.rects[r]
                name = raw_input("Enter name of {} object: ".format(r))
                if name == "skip":
                    pause = True
                    break
                elif name == " ":
                    break
                else:
                    newrects[name] = coords
            self.mycoll.append(newrects)
        clone = self.image.copy()
        for key in self.rects.keys():
            r = self.rects[key]
            color = (255, 0, 0)
            if key == self.sel_rect:
                color = (0, 255, 0)
            cv2.rectangle(clone, (r[0], r[1]), (r[0] + r[2], r[1] + r[3]), color, 2)
            cv2.putText(clone, key, (r[0], r[1]), 1, 1.0, (255, 0, 0))
        cv2.imshow(self.window_name, clone)
        doing = False
    self.collection.pickle(self.output)