コード例 #1
0
ファイル: app.py プロジェクト: cclauss/robovision
    def __init__(self):
        QWidget.__init__(self)

        # loaind ui from xml
        uic.loadUi(os.path.join(DIRPATH, 'app.ui'), self)

        # button event handlers
        self.btnStartCaptureForVideoAnalysis.clicked.connect(
                self.start_capture_for_video_analysis)
        self.btnStopCaptureForVideoAnalysis.clicked.connect(
                self.stop_capture_for_video_analysis)

        self.btnChooseClassifierXML.clicked.connect(self.choose_classifier_file)

        self.btnChooseImage.clicked.connect(self.choose_image_for_analysis)

        self.setup_tray_menu()

        # add camera ids
        for i in range(0, 11):
            self.cboxCameraIds.addItem(str(i))
            self.cboxCameraIds1.addItem(str(i))

        # setting up handlers for menubar actions
        self.actionAbout.triggered.connect(self.about)
        self.actionExit.triggered.connect(qApp.quit)
        self.actionPreferences.triggered.connect(self.show_preferences)

        self.img_widget_vid_analysis = ImageWidget()

        self.hlayoutVideoAnalysis.addWidget(self.img_widget_vid_analysis)

        self.img_widget_face_training = ImageWidget()
        self.hlayoutFaceTrainingImg.addWidget(self.img_widget_face_training)

        self.img_widget_img_analysis = ImageWidget()
        self.hlayoutImageAnalysis.addWidget(self.img_widget_img_analysis)

        self.vid_capture = VideoCapture()
        self.vid_capture.got_image_data_from_camera.connect(
                self.process_image_data_from_camera)

        self.highlight_faces = self.chkHighlightFaces.isChecked()
        self.chkHighlightFaces.stateChanged.connect(self.highlight_faces_checkbox_changed)
        self.chckGrayscale.stateChanged.connect(self.grayscale_checkbox_changed)

        # face trainer dataset browser btn handler
        self.btnBrowseDatasetForFaceTrainer.clicked.connect(self.browse_dataset_for_face_trainer)
        self.btnBrowseClassifierForFaceTrainer.clicked.connect(self.browse_classifier_file_for_face_trainer)
        self.btnStartFaceTrainer.clicked.connect(self.start_face_trainer)
コード例 #2
0
    def __init__(self, context):
        super(TestPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Test Plugin')

        self._widget = QWidget()
        context.add_widget(self._widget)

        # Layout and attach to widget
        layout = QVBoxLayout()
        self._widget.setLayout(layout)

        self._image_widget = ImageWidget(self._widget, self.image_roi_callback)
        layout.addWidget(self._image_widget)

        # Input field
        grid_layout = QGridLayout()
        layout.addLayout(grid_layout)

        self._info = QLineEdit()
        self._info.setDisabled(True)
        self._info.setText(
            "Draw a rectangle on the screen to perform object recognition of that ROI"
        )
        layout.addWidget(self._info)

        # Bridge for opencv conversion
        self.bridge = CvBridge()

        # Set subscriber and service to None
        self._sub = None
        self._srv = None
コード例 #3
0
    def __init__(self):
        super().__init__()

        self.title = "Glorified Rectangle Creator"
        self.setWindowTitle(self.title)

        self.data_dir = ""

        self.left = 0
        self.top = 0
        self.width = 1024
        self.height = 768
        self.setGeometry(self.left, self.top, self.width, self.height)

        self.tab_panel = TableWidget(self)

        file_list = FileListWidget()
        self.tab_panel.tab1.layout.addWidget(file_list)

        class_list = ClassListWidget()
        self.tab_panel.tab1.layout.addWidget(class_list)

        self.image_panel = ImageWidget(self)
        self.image_panel_controls = ImageControlsWidget()
        self.tab_panel.tab2.layout.addWidget(self.image_panel)
        self.tab_panel.tab2.layout.addWidget(self.image_panel_controls)

        self.setCentralWidget(self.tab_panel)

        self.center()

        self.show()
コード例 #4
0
ファイル: test.py プロジェクト: quanqhow/tx2
    def __init__(self, context):
        """
        TestPlugin class to evaluate the image_recognition_msgs interfaces
        :param context: QT context, aka parent
        """
        super(TestPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Test Plugin')

        self._widget = QWidget()
        context.add_widget(self._widget)
        
        # Layout and attach to widget
        layout = QVBoxLayout()  
        self._widget.setLayout(layout)

        self._image_widget = ImageWidget(self._widget, self.image_roi_callback, clear_on_click=True)
        layout.addWidget(self._image_widget)

        # Input field
        grid_layout = QGridLayout()
        layout.addLayout(grid_layout)

        self._info = QLineEdit()
        self._info.setDisabled(True)
        self._info.setText("Draw a rectangle on the screen to perform recognition of that ROI")
        layout.addWidget(self._info)

        # Bridge for opencv conversion
        self.bridge = CvBridge()

        # Set subscriber and service to None
        self._sub = None
        self._srv = None
コード例 #5
0
    def setup_ui(self):
        """Initialize widgets.
        """
        self.file_name = QLabel()
        self.f_widget = self.setup_func_widget()
        self.f_2widget = self.setup_second_func_widget()
        self.label_w = LabelWidget(self)
        self.image_w = ImageWidget(self.label_w, self)
        self.filelist_w = FilelistWidget(self)

        self.l_layout = QVBoxLayout()
        self.l_layout.addWidget(self.file_name)
        self.l_layout.addWidget(self.image_w)
        self.l_layout.addWidget(self.f_widget)
        self.l_layout.addWidget(self.f_2widget)
        self.l_widget = QWidget()
        self.l_widget.setLayout(self.l_layout)

        self.r_layout = QVBoxLayout()
        self.r_layout.addWidget(self.label_w)
        self.r_layout.addWidget(self.filelist_w)
        self.r_widget = QWidget()
        self.r_widget.setLayout(self.r_layout)

        self.h_layout = QHBoxLayout()
        self.h_layout.addWidget(self.l_widget)
        self.h_layout.addWidget(self.r_widget)

        self.setLayout(self.h_layout)
コード例 #6
0
    def __init__(self, context):
        """
        Annotation plugin to create data sets or test the Annotate.srv service
        :param context: Parent QT widget
        """
        super(AnnotationPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Label Plugin')

        self._widget = QWidget()
        context.add_widget(self._widget)

        # Layout and attach to widget
        layout = QVBoxLayout()
        self._widget.setLayout(layout)

        self._image_widget = ImageWidget(self._widget,
                                         self.image_roi_callback,
                                         clear_on_click=True)
        layout.addWidget(self._image_widget)

        # Input field
        grid_layout = QGridLayout()
        layout.addLayout(grid_layout)

        self._edit_path_button = QPushButton("Edit path")
        self._edit_path_button.clicked.connect(self._get_output_directory)
        grid_layout.addWidget(self._edit_path_button, 1, 1)

        self._output_path_edit = QLineEdit()
        self._output_path_edit.setDisabled(True)
        grid_layout.addWidget(self._output_path_edit, 1, 2)

        self._labels_edit = QLineEdit()
        self._labels_edit.setDisabled(True)
        grid_layout.addWidget(self._labels_edit, 2, 2)

        self._edit_labels_button = QPushButton("Edit labels")
        self._edit_labels_button.clicked.connect(self._get_labels)
        grid_layout.addWidget(self._edit_labels_button, 2, 1)

        self._save_button = QPushButton("Annotate again!")
        self._save_button.clicked.connect(self.annotate_again_clicked)
        grid_layout.addWidget(self._save_button, 2, 3)

        # Bridge for opencv conversion
        self.bridge = CvBridge()

        # Set subscriber to None
        self._sub = None
        self._srv = None

        self.labels = []
        self.label = ""
        self.output_directory = ""
コード例 #7
0
    def add_log_row(self, log_content_array):
        # add row to the QTableWidget for logs
        row_count = self.logs_ui.logs_table.rowCount()
        self.logs_ui.logs_table.setRowCount(row_count + 1)
        event_sign_image_path = None
        # log levels:
        # debug
        # info
        # notice
        # warning
        # error
        if log_content_array["log_event_type"] == "info":
            info_png_path = os.path.join(os.path.dirname(__file__),
                                         'resources/img/info.png')
            event_sign_image_path = str(info_png_path)
        elif log_content_array["log_event_type"] == "warning":
            warning_png_path = os.path.join(os.path.dirname(__file__),
                                            'resources/img/warning.png')
            event_sign_image_path = str(warning_png_path)
        elif log_content_array["log_event_type"] == "notice":
            notice_png_path = os.path.join(os.path.dirname(__file__),
                                           'resources/img/notice.png')
            event_sign_image_path = str(notice_png_path)
        elif log_content_array["log_event_type"] == "debug":
            debug_png_path = os.path.join(os.path.dirname(__file__),
                                          'resources/img/debug.png')
            event_sign_image_path = str(debug_png_path)
        elif log_content_array["log_event_type"] == "success":
            debug_png_path = os.path.join(os.path.dirname(__file__),
                                          'resources/img/success.png')
            event_sign_image_path = str(debug_png_path)
        elif log_content_array["log_event_type"] == "error":
            error_png_path = os.path.join(os.path.dirname(__file__),
                                          'resources/img/error.png')
            event_sign_image_path = str(error_png_path)

        image = ImageWidget(event_sign_image_path, self)
        widget = QWidget()
        hbl = QHBoxLayout()
        hbl.setMargin(0)
        hbl.setSpacing(0)
        hbl.addWidget(image)
        widget.setLayout(hbl)
        self.logs_ui.logs_table.setCellWidget(row_count, 0, widget)
        self.logs_ui.logs_table.setItem(
            row_count, 1,
            QTableWidgetItem(log_content_array["log_event_type"]))
        titleitem = QTableWidgetItem(log_content_array["title"])
        titleitem.setTextAlignment(QtCore.Qt.AlignCenter)
        self.logs_ui.logs_table.setItem(row_count, 2, titleitem)
        self.logs_ui.logs_table.setItem(
            row_count, 3, QTableWidgetItem(log_content_array["description"]))

        return 1
コード例 #8
0
    def __init__(self, context):
        super(LabelPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Label Plugin')

        self._widget = QWidget()
        context.add_widget(self._widget)

        # Layout and attach to widget
        layout = QVBoxLayout()
        self._widget.setLayout(layout)

        self._image_widget = ImageWidget(self._widget, self.image_roi_callback)
        layout.addWidget(self._image_widget)

        # Input field
        grid_layout = QGridLayout()
        layout.addLayout(grid_layout)

        self._edit_path_button = QPushButton("Edit path")
        self._edit_path_button.clicked.connect(self._get_output_directory)
        grid_layout.addWidget(self._edit_path_button, 1, 1)

        self._output_path_edit = QLineEdit()
        self._output_path_edit.setDisabled(True)
        grid_layout.addWidget(self._output_path_edit, 1, 2)

        self._labels_edit = QLineEdit()
        self._labels_edit.setDisabled(True)
        grid_layout.addWidget(self._labels_edit, 2, 2)

        self._edit_labels_button = QPushButton("Edit labels")
        self._edit_labels_button.clicked.connect(self._get_labels)
        grid_layout.addWidget(self._edit_labels_button, 2, 1)

        self._save_button = QPushButton("Save another one")
        self._save_button.clicked.connect(self.store_image)
        grid_layout.addWidget(self._save_button, 2, 3)

        # Bridge for opencv conversion
        self.bridge = CvBridge()

        # Set subscriber to None
        self._sub = None

        self.labels = []
        self.roi_image = None
        self.label = ""
        self.output_directory = ""
コード例 #9
0
    def __init__(self, context):
        """
        ManualPlugin class that performs a manual recognition based on a request
        :param context: QT context, aka parent
        """
        super(ManualPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Manual Plugin')

        self._widget = QWidget()
        context.add_widget(self._widget)
        
        # Layout and attach to widget
        layout = QVBoxLayout()  
        self._widget.setLayout(layout)

        self._image_widget = ImageWidget(self._widget, self.image_roi_callback)
        layout.addWidget(self._image_widget)

        # Input field
        grid_layout = QGridLayout()
        layout.addLayout(grid_layout)

        self._labels_edit = QLineEdit()
        self._labels_edit.setDisabled(True)
        grid_layout.addWidget(self._labels_edit, 2, 2)

        self._edit_labels_button = QPushButton("Edit labels")
        self._edit_labels_button.clicked.connect(self._get_labels)
        grid_layout.addWidget(self._edit_labels_button, 2, 1)

        self._done_recognizing_button = QPushButton("Done recognizing..")
        self._done_recognizing_button.clicked.connect(self._done_recognizing)
        self._done_recognizing_button.setDisabled(True)
        grid_layout.addWidget(self._done_recognizing_button, 3, 2)

        # Bridge for opencv conversion
        self.bridge = CvBridge()

        # Set service to None
        self._srv = None
        self._srv_name = None

        self._response = RecognizeResponse()
        self._recognizing = False
コード例 #10
0
    def setupUi(self, FormImageBboxEditor):
        FormImageBboxEditor.setObjectName("FormImageBboxEditor")
        FormImageBboxEditor.resize(684, 471)
        self.verticalLayout = QtWidgets.QVBoxLayout(FormImageBboxEditor)
        self.verticalLayout.setObjectName("verticalLayout")
        self.image = ImageWidget(FormImageBboxEditor)
        self.image.setObjectName("image")
        self.verticalLayout.addWidget(self.image)
        self.labelInfoPath = QtWidgets.QLabel(FormImageBboxEditor)
        self.labelInfoPath.setObjectName("labelInfoPath")
        self.verticalLayout.addWidget(self.labelInfoPath)
        self.labelInfoScale = QtWidgets.QLabel(FormImageBboxEditor)
        self.labelInfoScale.setObjectName("labelInfoScale")
        self.verticalLayout.addWidget(self.labelInfoScale)
        self.listView = QtWidgets.QListView(FormImageBboxEditor)
        self.listView.setObjectName("listView")
        self.verticalLayout.addWidget(self.listView)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.checkboxStayInside = QtWidgets.QCheckBox(FormImageBboxEditor)
        self.checkboxStayInside.setChecked(True)
        self.checkboxStayInside.setObjectName("checkboxStayInside")
        self.horizontalLayout.addWidget(self.checkboxStayInside)
        self.buttonSwitchInOutEditor = QtWidgets.QPushButton(
            FormImageBboxEditor)
        self.buttonSwitchInOutEditor.setObjectName("buttonSwitchInOutEditor")
        self.horizontalLayout.addWidget(self.buttonSwitchInOutEditor)
        self.buttonSwapInOutEditor = QtWidgets.QPushButton(FormImageBboxEditor)
        self.buttonSwapInOutEditor.setObjectName("buttonSwapInOutEditor")
        self.horizontalLayout.addWidget(self.buttonSwapInOutEditor)
        self.buttonImageNext = QtWidgets.QPushButton(FormImageBboxEditor)
        self.buttonImageNext.setObjectName("buttonImageNext")
        self.horizontalLayout.addWidget(self.buttonImageNext)
        self.buttonImagePrev = QtWidgets.QPushButton(FormImageBboxEditor)
        self.buttonImagePrev.setObjectName("buttonImagePrev")
        self.horizontalLayout.addWidget(self.buttonImagePrev)
        self.buttonDone = QtWidgets.QPushButton(FormImageBboxEditor)
        self.buttonDone.setObjectName("buttonDone")
        self.horizontalLayout.addWidget(self.buttonDone)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.verticalLayout.setStretch(0, 3)
        self.verticalLayout.setStretch(3, 1)

        self.retranslateUi(FormImageBboxEditor)
        QtCore.QMetaObject.connectSlotsByName(FormImageBboxEditor)
コード例 #11
0
ファイル: main.py プロジェクト: keyraphi/RaPiIntercom
    def show_start_screen(self, time_ms: int) -> None:
        """Show start-splashscreen for the given time. The regular UI is shown
        afterwards.

        Args:
            time_ms:
                Number of miliseconds to actually show the splash-screen
        """
        image_widget = ImageWidget("images/splash_screen.png")
        v_layout = QVBoxLayout()
        h_layout = QHBoxLayout()
        h_layout.addWidget(image_widget)
        v_layout.addLayout(h_layout)
        widget = QWidget()
        widget.setLayout(v_layout)
        self.setCentralWidget(widget)

        timer = QTimer(self)
        timer.singleShot(time_ms, self.on_start_screen_end)
コード例 #12
0
    def __init__(self):

        #   call super class
        super(MainWidget, self).__init__()

        #   get widget
        self.imageWidget = ImageWidget()
        self.otherWidget = Profile()

        #   create box layout
        self.boxLayout = QtGui.QVBoxLayout()

        #   add widget to box
        self.boxLayout.addWidget(self.imageWidget)
        self.boxLayout.addStretch()
        self.boxLayout.addWidget(self.otherWidget)

        #   set layout
        self.setLayout(self.boxLayout)
コード例 #13
0
    def add_log_row(self, log_content_array):
        # add row to the QTableWidget for logs
        row_count = self.logs_ui.logs_table.rowCount()
        self.logs_ui.logs_table.setRowCount(row_count + 1)
        event_sign_image_path = None

        if log_content_array['log_event_type'] == 'info':
            info_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/info.png')
            event_sign_image_path = str(info_png_path)
        elif log_content_array['log_event_type'] == 'warning':
            warning_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/warning.png')
            event_sign_image_path = str(warning_png_path)
        elif log_content_array['log_event_type'] == 'notice':
            notice_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/notice.png')
            event_sign_image_path = str(notice_png_path)
        elif log_content_array['log_event_type'] == 'debug':
            debug_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/debug.png')
            event_sign_image_path = str(debug_png_path)
        elif log_content_array['log_event_type'] == 'success':
            debug_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/success.png')
            event_sign_image_path = str(debug_png_path)
        elif log_content_array['log_event_type'] == 'error':
            error_png_path = os.path.join(os.path.dirname(__file__), 'resources/img/error.png')
            event_sign_image_path = str(error_png_path)

        image = ImageWidget(event_sign_image_path, self)
        widget = QWidget()
        hbl = QHBoxLayout()
        hbl.setMargin(0)
        hbl.setSpacing(0)
        hbl.addWidget(image)
        widget.setLayout(hbl)

        self.logs_ui.logs_table.setCellWidget(row_count, 0, widget)
        self.logs_ui.logs_table.setItem(row_count, 1, QTableWidgetItem(log_content_array['log_event_type']))

        titleitem = QTableWidgetItem(log_content_array['title'])
        titleitem.setTextAlignment(QtCore.Qt.AlignCenter)

        self.logs_ui.logs_table.setItem(row_count, 2, titleitem)
        self.logs_ui.logs_table.setItem(row_count, 3, QTableWidgetItem(log_content_array['description']))

        return 1
コード例 #14
0
    def initUI(self):
        vbox = QtGui.QVBoxLayout()

        # Create the widget that displays the video frame
        self.pic = ImageWidget()

        # A horizontal slider to scroll through the video
        self.sld = QtGui.QSlider(QtCore.Qt.Horizontal)
        # self.sld.setFocusPolicy(QtCore.Qt.NoFocus)
        self.sld.setRange(0, self.num_positions)
        self.sld.setValue(100)
        self.sld.valueChanged[int].connect(self.change_slider_value)

        # A special widget that displays the marked ranges and average frame colors
        # (Is also called slider, because it should later take over the role of the conventional slider)
        self.sld2 = SliderWidget()

        # The ranges class manages the marked video ranges and sends them to the widget when changed
        self.ranges = Ranges(update_function=self.sld2.setRanges)
        self.load_or_save_ranges(save=False)

        # A label with a quick introduction
        man_label = QtGui.QLabel()
        man_label.setText(
            "Use the slider to navigate (Mouse + keyboard).\n" +
            "Q = Start preview range, A = Start ad range, Z = Start ignore range\n"
            +
            "D = End current range, Bksp = remove last element.\n Auto-saves on close."
        )
        man_label.setSizePolicy(QtGui.QSizePolicy.Minimum,
                                QtGui.QSizePolicy.Fixed)

        # Put everything together and show it
        vbox.addWidget(self.pic)
        vbox.addWidget(self.sld)
        vbox.addWidget(self.sld2)
        vbox.addWidget(man_label)

        self.setLayout(vbox)
        self.setWindowTitle('Video Annotator')
        self.setAcceptDrops(True)
        self.show()
コード例 #15
0
    def __init__(self):
        QWidget.__init__(self)

        # loaind ui from xml
        uic.loadUi(os.path.join(DIRPATH, 'app.ui'), self)

        # FIXME - libpng warning: iCCP: known incorrect sRGB profile
        self.setWindowIcon(QIcon("./images/robot_icon.png"))

        # keep the window fixed sized
        self.setFixedSize(self.size())

        # button event handlers
        self.btnStartCaptureForVideoAnalysis.clicked.connect(
            self.start_capture_for_video_analysis)
        self.btnStopCaptureForVideoAnalysis.clicked.connect(
            self.stop_capture_for_video_analysis)

        self.btnChooseClassifierXML.clicked.connect(
            self.choose_classifier_file)

        self.btnChooseImage.clicked.connect(self.choose_image_for_analysis)

        self.setup_tray_menu()

        # add camera ids
        for i in range(0, 11):
            self.cboxCameraIds.addItem(str(i))
            self.cboxCameraIds1.addItem(str(i))

        # setting up handlers for menubar actions
        self.actionAbout.triggered.connect(self.about)
        self.actionExit.triggered.connect(qApp.quit)
        self.actionPreferences.triggered.connect(self.show_preferences)

        # video analysis image widget
        self.img_widget_vid_analysis = ImageWidget()
        self.hlayoutVideoAnalysis.addWidget(self.img_widget_vid_analysis)

        # face training image widget
        self.img_widget_face_training = ImageWidget()
        self.hlayoutFaceTrainingImg.addWidget(self.img_widget_face_training)

        # face identification image widget
        self.img_widget_identify_face = ImageWidget()
        self.hlayoutIdentifyFace.addWidget(self.img_widget_identify_face)

        # image analysis image widget
        self.img_widget_img_analysis = ImageWidget()
        self.hlayoutImageAnalysis.addWidget(self.img_widget_img_analysis)
        img = cv2.imread("images/human.png")
        self.img_widget_img_analysis.handle_image_data(img)

        self.vid_capture = VideoCapture()
        self.vid_capture.got_image_data_from_camera.connect(
            self.process_image_data_from_camera)

        self.highlight_faces = self.chkHighlightFaces.isChecked()
        self.chkHighlightFaces.stateChanged.connect(
            self.highlight_faces_checkbox_changed)
        self.chckGrayscale.stateChanged.connect(
            self.grayscale_checkbox_changed)

        # face trainer dataset browser btn handler
        self.btnBrowseDatasetForFaceTrainer.clicked.connect(
            self.browse_dataset_for_face_trainer)
        self.btnBrowseClassifierForFaceTrainer.clicked.connect(
            self.browse_classifier_file_for_face_trainer)
        self.btnStartFaceTrainer.clicked.connect(self.start_face_trainer)

        self.btnBrowseIdentifyFace.clicked.connect(self.browse_identify_face)

        self.btnTalk.clicked.connect(self.lets_talk)

        # create and start robot
        self.robot = Robot(self.lblRobot)

        self.mouth = Mouth()

        # connect global signals to slots
        g_emitter().feed_mouth.connect(self.mouth.feed_text)
        g_emitter().set_speaking_state.connect(self.robot.set_speaking_state)
        g_emitter().set_idle_state.connect(self.robot.set_idle_state)

        self.robot.start()
        self.mouth.start()
コード例 #16
0
#!./venv/bin/python3
import os

from PySide2.QtWidgets import (QMainWindow, QApplication, QSizePolicy, QWidget)
from PySide2.QtGui import QResizeEvent, QKeyEvent, QDesktopServices
from PySide2.QtCore import QSize, Slot, QUrl
import bad_practise_global as bpg
import custom_log as l
from PySide2.QtCore import Qt
# from main_level_widget import MainWidget
from image_widget import ImageWidget

if __name__ == '__main__':
    # l.disable()
    import sys

    app = QApplication(sys.argv)
    image_widget = ImageWidget()
    image_widget.show()
    image_widget.resize(500, 500)
    # window.resize(bpg.screen_width, bpg.screen_height)
    sys.exit(app.exec_())
コード例 #17
0
    def __init__(self, context):
        """
        Annotation plugin to create and edit data sets either by manual annotation or automatically, e.g. using
        a tracker, and generating larger data sets with data augmentation.
        :param context: Parent QT widget
        """
        super(AnnotationPlugin, self).__init__(context)

        # Widget setup
        self.setObjectName('Label Plugin')

        self.widget = QWidget()
        context.add_widget(self.widget)
        self.widget.resize(1800, 1000)
        """left side (current image, grab img button, ...)"""

        self.cur_im_widget = ImageWidget(self.widget,
                                         self.roi_callback,
                                         clear_on_click=False)
        self.cur_im_widget.setGeometry(QRect(20, 20, 640, 480))

        self.grab_img_button = QPushButton(self.widget)
        self.grab_img_button.setText("Grab frame")
        self.grab_img_button.clicked.connect(self.grab_frame)
        self.grab_img_button.setGeometry(QRect(20, 600, 100, 50))
        """right side (selected image, workspace...)"""

        self.sel_im_widget = ImageWidget(self.widget,
                                         self.roi_callback,
                                         clear_on_click=True)
        self.sel_im_widget.setGeometry(QRect(720, 20, 640, 480))
        """list widgets for images and annotations"""

        self.annotation_list_widget = QListWidget(self.widget)
        self.annotation_list_widget.setGeometry(QRect(1400, 50, 150, 200))
        self.annotation_list_widget.setObjectName("annotation_list_widget")
        self.annotation_list_widget.setSelectionMode(
            QAbstractItemView.ExtendedSelection)
        self.annotation_list_widget.currentItemChanged.connect(
            self.select_annotation)

        self.image_list_widget = QListWidget(self.widget)
        self.image_list_widget.setGeometry(QRect(1550, 50, 250, 500))
        self.image_list_widget.setObjectName("image_list_widget")
        self.image_list_widget.setSelectionMode(
            QAbstractItemView.ExtendedSelection)
        self.image_list_widget.currentItemChanged.connect(self.select_image)

        self.output_path_edit = QLineEdit(self.widget)
        self.output_path_edit.setGeometry(QRect(1400, 20, 300, 30))
        self.output_path_edit.setDisabled(True)

        self.edit_path_button = QPushButton(self.widget)
        self.edit_path_button.setText("set ws")
        self.edit_path_button.setGeometry(QRect(1700, 20, 100, 30))
        self.edit_path_button.clicked.connect(self.get_workspace)
        """ buttons for adding or deleting annotations"""
        self.add_annotation_button = QPushButton(self.widget)
        self.add_annotation_button.setText("add")
        self.add_annotation_button.setGeometry(QRect(1400, 250, 75, 30))
        self.add_annotation_button.clicked.connect(self.add_annotation)

        self.remove_annotation_button = QPushButton(self.widget)
        self.remove_annotation_button.setText("del")
        self.remove_annotation_button.setGeometry(QRect(1475, 250, 75, 30))
        self.remove_annotation_button.clicked.connect(
            self.remove_current_annotation)
        """label combo box, line edit and button for adding labels"""
        self.option_selector = QComboBox(self.widget)
        self.option_selector.currentIndexChanged.connect(self.class_change)
        self.option_selector.setGeometry(1400, 280, 150, 30)

        self.label_edit = QLineEdit(self.widget)
        self.label_edit.setGeometry(QRect(1400, 310, 100, 30))
        self.label_edit.setDisabled(False)

        self.edit_label_button = QPushButton(self.widget)
        self.edit_label_button.setText("add")
        self.edit_label_button.setGeometry(QRect(1500, 310, 50, 30))
        self.edit_label_button.clicked.connect(self.add_label)
        """ button for image deletion"""
        self.remove_image_button = QPushButton(self.widget)
        self.remove_image_button.setText("delete image")
        self.remove_image_button.setGeometry(QRect(1550, 550, 150, 30))
        self.remove_image_button.clicked.connect(self.remove_current_image)
        """ export data """
        self.gen_data_label = QLabel(self.widget)
        self.gen_data_label.setText("Export workspace: ")
        self.gen_data_label.setGeometry(QRect(1550, 650, 250, 50))

        self.export_ws_button = QPushButton(self.widget)
        self.export_ws_button.setText("Export")
        self.export_ws_button.setGeometry(QRect(1550, 700, 125, 50))
        self.export_ws_button.clicked.connect(self.export_workspace_to_tf)

        self.conf_export_button = QPushButton(self.widget)
        self.conf_export_button.setText("Configure")
        self.conf_export_button.setGeometry(QRect(1675, 700, 125, 50))
        self.conf_export_button.clicked.connect(self.set_export_parameters)
        """ generate augmented data """

        self.gen_data_label = QLabel(self.widget)
        self.gen_data_label.setText("Generate augmented dataset:")
        self.gen_data_label.setGeometry(QRect(1550, 800, 250, 50))

        self.gen_data_button = QPushButton(self.widget)
        self.gen_data_button.setText("Generate")
        self.gen_data_button.setGeometry(QRect(1550, 850, 125, 50))
        self.gen_data_button.clicked.connect(self.generate_augmented_data)

        self.gen_data_button = QPushButton(self.widget)
        self.gen_data_button.setText("Configure")
        self.gen_data_button.setGeometry(QRect(1675, 850, 125, 50))
        self.gen_data_button.clicked.connect(
            self.set_data_augmentation_parameters)
        """ functional stuff"""
        self.bridge = CvBridge()

        self.sub = None

        self.class_id = -1
        self.label = ""
        self.changes_done = False

        self.workspace = None
        self.labels = []
        self.images_with_annotations = []
        self.cur_annotated_image = None
        self.cur_annotation_index = -1

        self.class_change()

        # export parameters
        self.default_config_path = None
        self.pretrained_graph = None
        self.p_test = 0.2
        self.batch_size = 12

        # data augmentation parameters
        self.gen_dir = None
        self.num_illuminate = 1
        self.num_scale = 1
        self.num_blur = 1
コード例 #18
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.buttonLoadKdenlive = QtWidgets.QPushButton(self.centralwidget)
        self.buttonLoadKdenlive.setObjectName("buttonLoadKdenlive")
        self.horizontalLayout_2.addWidget(self.buttonLoadKdenlive)
        self.buttonLoadImages = QtWidgets.QPushButton(self.centralwidget)
        self.buttonLoadImages.setObjectName("buttonLoadImages")
        self.horizontalLayout_2.addWidget(self.buttonLoadImages)
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.buttonSaveKdenlive = QtWidgets.QPushButton(self.centralwidget)
        self.buttonSaveKdenlive.setObjectName("buttonSaveKdenlive")
        self.horizontalLayout_2.addWidget(self.buttonSaveKdenlive)
        self.buttonSaveBboxesJson = QtWidgets.QPushButton(self.centralwidget)
        self.buttonSaveBboxesJson.setObjectName("buttonSaveBboxesJson")
        self.horizontalLayout_2.addWidget(self.buttonSaveBboxesJson)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.gridLayout = QtWidgets.QGridLayout()
        self.gridLayout.setObjectName("gridLayout")
        self.lineeditTargetVideoResolution = QtWidgets.QLineEdit(self.centralwidget)
        self.lineeditTargetVideoResolution.setText("")
        self.lineeditTargetVideoResolution.setObjectName("lineeditTargetVideoResolution")
        self.gridLayout.addWidget(self.lineeditTargetVideoResolution, 0, 2, 1, 1)
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem1, 0, 3, 1, 1)
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setObjectName("label")
        self.gridLayout.addWidget(self.label, 0, 1, 1, 1)
        self.verticalLayout.addLayout(self.gridLayout)
        self.image = ImageWidget(self.centralwidget)
        self.image.setObjectName("image")
        self.verticalLayout.addWidget(self.image)
        self.labelInfoPath = QtWidgets.QLabel(self.centralwidget)
        self.labelInfoPath.setObjectName("labelInfoPath")
        self.verticalLayout.addWidget(self.labelInfoPath)
        self.labelInfoScale = QtWidgets.QLabel(self.centralwidget)
        self.labelInfoScale.setObjectName("labelInfoScale")
        self.verticalLayout.addWidget(self.labelInfoScale)
        self.listView = QtWidgets.QListView(self.centralwidget)
        self.listView.setObjectName("listView")
        self.verticalLayout.addWidget(self.listView)
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.checkboxStayInside = QtWidgets.QCheckBox(self.centralwidget)
        self.checkboxStayInside.setChecked(True)
        self.checkboxStayInside.setObjectName("checkboxStayInside")
        self.horizontalLayout.addWidget(self.checkboxStayInside)
        self.buttonSwitchInOutEditor = QtWidgets.QPushButton(self.centralwidget)
        self.buttonSwitchInOutEditor.setObjectName("buttonSwitchInOutEditor")
        self.horizontalLayout.addWidget(self.buttonSwitchInOutEditor)
        self.buttonSwapInOutEditor = QtWidgets.QPushButton(self.centralwidget)
        self.buttonSwapInOutEditor.setObjectName("buttonSwapInOutEditor")
        self.horizontalLayout.addWidget(self.buttonSwapInOutEditor)
        self.buttonImageNext = QtWidgets.QPushButton(self.centralwidget)
        self.buttonImageNext.setObjectName("buttonImageNext")
        self.horizontalLayout.addWidget(self.buttonImageNext)
        self.buttonImagePrev = QtWidgets.QPushButton(self.centralwidget)
        self.buttonImagePrev.setObjectName("buttonImagePrev")
        self.horizontalLayout.addWidget(self.buttonImagePrev)
        self.buttonDone = QtWidgets.QPushButton(self.centralwidget)
        self.buttonDone.setObjectName("buttonDone")
        self.horizontalLayout.addWidget(self.buttonDone)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_3.addWidget(self.label_2)
        self.spinboxBboxRatioMultiplier = QtWidgets.QDoubleSpinBox(self.centralwidget)
        self.spinboxBboxRatioMultiplier.setObjectName("spinboxBboxRatioMultiplier")
        self.horizontalLayout_3.addWidget(self.spinboxBboxRatioMultiplier)
        self.buttonApplyBboxRatioMultiplier = QtWidgets.QPushButton(self.centralwidget)
        self.buttonApplyBboxRatioMultiplier.setObjectName("buttonApplyBboxRatioMultiplier")
        self.horizontalLayout_3.addWidget(self.buttonApplyBboxRatioMultiplier)
        spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_3.addItem(spacerItem2)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.verticalLayout.setStretch(2, 3)
        self.verticalLayout.setStretch(5, 1)
        MainWindow.setCentralWidget(self.centralwidget)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)