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)
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
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()
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
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)
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 = ""
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
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 = ""
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
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)
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)
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)
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
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()
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()
#!./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_())
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
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)