Пример #1
0
def main():

    img = parseInput()
    d = Detection()
    link_coord = d.run(img)
    laser_coord = getLaserCoords(img)
    print("Link Coordinates", link_coord)
    print("Laser Coordinates", laser_coord)
class MainGUI(QMainWindow):
    def initiate_shared_variables(self):
        self.shared_variables = Shared_Variables()
        self.shared_variables.MAX_BOX_AREA = MAX_BOX_AREA
        self.shared_variables.PRECISION = PRECISION
        self.shared_variables.MAX_DETECTION = MAX_DETECTION
        self.shared_variables.WIDTH = WIDTH
        self.shared_variables.HEIGHT = HEIGHT
        self.shared_variables.SHOW_ONLY = SHOW_ONLY
        self.shared_variables.list = []
        self.shared_variables.OFFSET = OFFSET
        self.shared_variables.DETECTION_SIZE = DETECTION_SIZE
        self.shared_variables.DETECTION_DURATION = DETECTION_DURATION
        self.shared_variables.MAX_TRACKING_MISSES = MAX_TRACKING_MISSES
        self.shared_variables.HTTP_SERVER = HTTP_SERVER

        if RESET_SHOW_ONLY_ON_START:
            self.shared_variables.SHOW_ONLY = []

        # Start webserver
        if HTTP_SERVER:
            from http_server import HTTPserver
            HTTPserver(shared_variables=self.shared_variables).start()

    def __init__(self):
        super(MainGUI, self).__init__()

        self.initiate_shared_variables()

        # Create detection and load model
        self.detection = Detection(shared_variables=self.shared_variables)

        self.threadpool = QThreadPool()

        print("Multithreading with maximum %d threads" %
              self.threadpool.maxThreadCount())
        """
        self.timer = QTimer()
        self.timer.setInterval(10)
        self.timer.timeout.connect(self.print_output)
        self.timer.start()
        """

        # Start Detection thread
        self.start_worker()

    def execute_this_fn(self, progress_callback):
        while True:
            if len(self.shared_variables.SHOW_ONLY) == 0:
                time.sleep(self.shared_variables.DETECTION_DURATION
                           )  # how often we should detect stuff

            else:
                #print("Detection...")
                time.sleep(self.shared_variables.DETECTION_DURATION
                           )  # how often we should detect stuff
                progress_callback.emit(
                    self.detection.run())  # detect and emits boxes!
        return "Done"

    def create_tracking_boxes(self, boxes):
        #print("got detection now create trackerbox")
        #print(boxes)

        for box in boxes:
            if len(self.shared_variables.list) < MAX_DETECTION:
                self.shared_variables.list.append(
                    screen_overlay_handler.TrackingBox(
                        len(self.shared_variables.list), self.shared_variables,
                        box[0], box[1], box[2]))

    def print_output(self):
        """
        remove = []
        index = 0
        for box in self.shared_variables.list:
            if box.done:
                box.finish(self)
                remove.insert(0,index)
            index += 1

        for i in remove:
            del self.shared_variables.list[i]
            print(self.shared_variables.list)
        """
        pass

    def thread_complete(self):
        #print("sss")
        pass

    def start_worker(self):
        # Pass the function to execute
        worker = Worker(
            self.execute_this_fn
        )  # Any other args, kwargs are passed to the run function
        worker.signals.progress.connect(self.create_tracking_boxes)
        worker.signals.result.connect(self.print_output)
        worker.signals.finished.connect(self.thread_complete)
        # Execute

        self.threadpool.start(worker)
Пример #3
0
def getLinkCoords(d, img):
    d = Detection()
    link_coord = d.run(img)
    return link_coord