def __init__(self, parent=None):

        self.network = Detection_Network()

        self.t_network = ThreadNetwork(self.network)
        self.t_network.start()

        QtWidgets.QWidget.__init__(self, parent)
        self.setWindowTitle("JdeRobot-TensorFlow detector")
        self.resize(1800, 1200)
        self.move(450, 150)
        self.setWindowIcon(QtGui.QIcon('resources/jderobot.png'))
        self.updGUI.connect(self.update)

        # Original image label.
        self.im_label = QtWidgets.QLabel(self)
        self.im_label.resize(800, 600)
        self.im_label.move(50, 100)
        self.im_label.show()

        # Predicted image label.
        self.im_pred_label = QtWidgets.QLabel(self)
        self.im_pred_label.resize(800, 600)
        self.im_pred_label.move(950, 100)
        self.im_pred_label.show()

        # Button for configuring detection flow
        button = QtWidgets.QPushButton(self)
        button.move(850, 800)
        button.setText('Toggle\nDetection')
        button.clicked.connect(self.toggleNetwork)
Exemplo n.º 2
0
    # cfg to specify the use of GUI
    gui_cfg = None
    try:
        gui_cfg = sys.argv[2]
    except IndexError:
        raise SystemExit('Missing GUI configuration. Usage: python2 objecttracker.py objecttracker.yml on')

    cfg = readConfig()
    cam = selectVideoSource(cfg, gui_cfg)
    net_prop, image_net_size, confidence, DetectionNetwork = selectNetwork(cfg)
    tracker_prop, tracker_lib_prop = selectTracker(cfg)
    logger_status = readLoggerStatus(cfg)

    network = DetectionNetwork(net_prop)
    # Threading Network
    t_network = ThreadNetwork(network)
    t_network.setDaemon(True)  # setting daemon thread to exit
    t_network.start()

    tracker = Tracker(tracker_prop, tracker_lib_prop)
    # Threading Tracker
    t_tracker = ThreadTracker(tracker)
    t_tracker.setDaemon(True)
    t_tracker.start()

    window = GUI()
    cam.setGUI(window)
    cam.setLogger(logger_status)
    cam.setNetwork(network, t_network)
    cam.setTracker(tracker)
    cam.setNetworkParams(image_net_size, confidence)
Exemplo n.º 3
0
            '\n\tUsage: python2 objectdetector.py objectdetector.yml\n')


if __name__ == '__main__':

    cfg = readConfig()
    cam = selectVideoSource(cfg)
    net_prop, DetectionNetwork = selectNetwork(cfg)

    # Threading the camera...
    t_cam = ThreadCamera(cam)
    t_cam.start()

    network = DetectionNetwork(net_prop)
    network.setCamera(cam)
    t_network = ThreadNetwork(network)
    t_network.start()

    app = QtWidgets.QApplication(sys.argv)
    window = GUI()
    window.setCamera(cam, t_cam)
    window.setNetwork(network, t_network)
    window.show()

    # Threading GUI
    t_gui = ThreadGUI(window)
    t_gui.start()

    print("")
    print("Requested timers:")
    print("    Camera: %d ms" % (t_cam.t_cycle))
Exemplo n.º 4
0
    def __init__(self, parent=None):
        ''' GUI class creates the GUI that we're going to use to
        preview the live video as well as the results of the real-time
        classification.
        '''

        QtWidgets.QWidget.__init__(self, parent)
        self.setWindowTitle("JdeRobot-TensorFlow detector")
        self.resize(1200, 500)
        self.move(150, 50)
        self.setWindowIcon(QtGui.QIcon('GUI/resources/jderobot.png'))
        self.updGUI.connect(self.update)

        # Original image label.
        self.im_label = QtWidgets.QLabel(self)
        self.im_label.resize(450, 350)
        self.im_label.move(25, 90)
        self.im_label.show()

        # Processed image label.
        self.im_pred_label = QtWidgets.QLabel(self)
        self.im_pred_label.resize(450, 350)
        self.im_pred_label.move(725, 90)
        self.im_pred_label.show()

        # Button for configuring detection flow
        self.button_cont_detection = QtWidgets.QPushButton(self)
        self.button_cont_detection.move(550, 100)
        self.button_cont_detection.clicked.connect(self.toggleNetwork)

        # Button for processing a single frame
        self.button_one_frame = QtWidgets.QPushButton(self)
        self.button_one_frame.move(550, 200)
        self.button_one_frame.clicked.connect(self.updateOnce)
        self.button_one_frame.setText('On-demand\ndetection')

        # Logo
        self.logo_label = QtWidgets.QLabel(self)
        self.logo_label.resize(150, 150)
        self.logo_label.move(520, 300)
        self.logo_label.setScaledContents(True)

        logo_img = QtGui.QImage()
        logo_img.load('GUI/resources/jderobot.png')
        self.logo_label.setPixmap(QtGui.QPixmap.fromImage(logo_img))
        self.logo_label.show()

        # Network initialization.

        try:
            cfg = config.load(sys.argv[1])
        except IndexError:
            raise SystemExit(
                'Missing YML file. Usage: python2 objectdetector.py objectdetector.yml'
            )

        net_model = cfg.getNode()['Model']

        self.network = Detection_Network(net_model)
        self.t_network = ThreadNetwork(self.network)
        self.t_network.start()
        self.toggleNetwork()
Exemplo n.º 5
0
class GUI(QtWidgets.QWidget):

    updGUI = QtCore.pyqtSignal()

    def __init__(self, parent=None):
        ''' GUI class creates the GUI that we're going to use to
        preview the live video as well as the results of the real-time
        classification.
        '''

        QtWidgets.QWidget.__init__(self, parent)
        self.setWindowTitle("JdeRobot-TensorFlow detector")
        self.resize(1200, 500)
        self.move(150, 50)
        self.setWindowIcon(QtGui.QIcon('GUI/resources/jderobot.png'))
        self.updGUI.connect(self.update)

        # Original image label.
        self.im_label = QtWidgets.QLabel(self)
        self.im_label.resize(450, 350)
        self.im_label.move(25, 90)
        self.im_label.show()

        # Processed image label.
        self.im_pred_label = QtWidgets.QLabel(self)
        self.im_pred_label.resize(450, 350)
        self.im_pred_label.move(725, 90)
        self.im_pred_label.show()

        # Button for configuring detection flow
        self.button_cont_detection = QtWidgets.QPushButton(self)
        self.button_cont_detection.move(550, 100)
        self.button_cont_detection.clicked.connect(self.toggleNetwork)

        # Button for processing a single frame
        self.button_one_frame = QtWidgets.QPushButton(self)
        self.button_one_frame.move(550, 200)
        self.button_one_frame.clicked.connect(self.updateOnce)
        self.button_one_frame.setText('On-demand\ndetection')

        # Logo
        self.logo_label = QtWidgets.QLabel(self)
        self.logo_label.resize(150, 150)
        self.logo_label.move(520, 300)
        self.logo_label.setScaledContents(True)

        logo_img = QtGui.QImage()
        logo_img.load('GUI/resources/jderobot.png')
        self.logo_label.setPixmap(QtGui.QPixmap.fromImage(logo_img))
        self.logo_label.show()

        # Network initialization.

        try:
            cfg = config.load(sys.argv[1])
        except IndexError:
            raise SystemExit(
                'Missing YML file. Usage: python2 objectdetector.py objectdetector.yml'
            )

        net_model = cfg.getNode()['Model']

        self.network = Detection_Network(net_model)
        self.t_network = ThreadNetwork(self.network)
        self.t_network.start()
        self.toggleNetwork()

    def setCamera(self, cam):
        ''' Declares the Camera object '''
        self.cam = cam

    def update(self):
        ''' Updates the GUI for every time the thread change '''
        # We get the original image and display it.
        im_prev = self.cam.getImage()
        self.network.input_image = im_prev

        im_predicted = self.network.output_image

        im = QtGui.QImage(im_prev.data, im_prev.shape[1], im_prev.shape[0],
                          QtGui.QImage.Format_RGB888)
        im_scaled = im.scaled(self.im_label.size())

        self.im_label.setPixmap(QtGui.QPixmap.fromImage(im_scaled))
        try:
            im_predicted = QtGui.QImage(im_predicted.data,
                                        im_predicted.shape[1],
                                        im_prev.shape[0],
                                        QtGui.QImage.Format_RGB888)
            im_predicted_scaled = im_predicted.scaled(
                self.im_pred_label.size())

            self.im_pred_label.setPixmap(
                QtGui.QPixmap.fromImage(im_predicted_scaled))
        except AttributeError:
            pass

    def toggleNetwork(self):
        self.t_network.activated = not self.t_network.activated

        if self.t_network.activated:
            self.button_cont_detection.setStyleSheet(
                'QPushButton {color: red;}')
            self.button_cont_detection.setText(
                'Switch off\nContinuous\nDetection')
        else:
            self.button_cont_detection.setStyleSheet(
                'QPushButton {color: green;}')
            self.button_cont_detection.setText(
                'Switch on\nContinuous\nDetection')

    def updateOnce(self):
        self.t_network.runOnce()
class GUI(QtWidgets.QWidget):

    updGUI = QtCore.pyqtSignal()

    def __init__(self, parent=None):

        self.network = Detection_Network()

        self.t_network = ThreadNetwork(self.network)
        self.t_network.start()

        QtWidgets.QWidget.__init__(self, parent)
        self.setWindowTitle("JdeRobot-TensorFlow detector")
        self.resize(1800, 1200)
        self.move(450, 150)
        self.setWindowIcon(QtGui.QIcon('resources/jderobot.png'))
        self.updGUI.connect(self.update)

        # Original image label.
        self.im_label = QtWidgets.QLabel(self)
        self.im_label.resize(800, 600)
        self.im_label.move(50, 100)
        self.im_label.show()

        # Predicted image label.
        self.im_pred_label = QtWidgets.QLabel(self)
        self.im_pred_label.resize(800, 600)
        self.im_pred_label.move(950, 100)
        self.im_pred_label.show()

        # Button for configuring detection flow
        button = QtWidgets.QPushButton(self)
        button.move(850, 800)
        button.setText('Toggle\nDetection')
        button.clicked.connect(self.toggleNetwork)

    def setCamera(self, cam):
        self.cam = cam

    def update(self):

        im_prev = self.cam.getImage()
        self.network.input_image = im_prev
        im_predicted = self.network.output_image
        im = QtGui.QImage(im_prev.data, im_prev.shape[1], im_prev.shape[0],
                          QtGui.QImage.Format_RGB888)
        im_scaled = im.scaled(self.im_label.size())

        self.im_label.setPixmap(QtGui.QPixmap.fromImage(im_scaled))

        im_predicted = QtGui.QImage(im_predicted.data, im_predicted.shape[1],
                                    im_prev.shape[0],
                                    QtGui.QImage.Format_RGB888)
        im_predicted_scaled = im_predicted.scaled(self.im_pred_label.size())

        self.im_pred_label.setPixmap(
            QtGui.QPixmap.fromImage(im_predicted_scaled))

    def toggleNetwork(self):
        self.t_network.activated = not self.t_network.activated
        print('Now is: {}'.format(self.t_network.activated))