def __init__(self): """ Build user interface """ QWidget.__init__(self) # Create a timer. self.timer = QTimer() self.timer.timeout.connect(self.nextFrameSlot) # Create a layout. layout = QVBoxLayout() # Add a button self.btn = QPushButton("Load an image") self.btn.clicked.connect(self.pickFile) layout.addWidget(self.btn) # Add a button for saving model saveButton = QPushButton("Save Model") saveButton.clicked.connect(self.saveModel) layout.addWidget(saveButton) # Add a button button_layout = QHBoxLayout() btnCamera = QPushButton("Start camera") btnCamera.clicked.connect(self.openCamera) button_layout.addWidget(btnCamera) btnCamera = QPushButton("Stop camera") btnCamera.clicked.connect(self.stopCamera) button_layout.addWidget(btnCamera) layout.addLayout(button_layout) center_layout = QHBoxLayout() left_layout = QVBoxLayout() right_layout = QVBoxLayout() # Add a label to hold raw image self.raw_frame = QLabel() self.raw_frame.setFixedSize(640, 360) left_layout.addWidget(self.raw_frame) # Add a label to hold filtered image self.filtered_frame = QLabel() self.filtered_frame.setFixedSize(640, 360) left_layout.addWidget(self.filtered_frame) # Set last frame self.last_frame = None # Create controller self.det_controller = DetectionController() # Create radio buttons for i, comp in enumerate(self.det_controller.object.components.keys()): radiobutton = QRadioButton(comp) if i == 0: radiobutton.setChecked(False) self.det_controller.selected_component = comp radiobutton.component = comp radiobutton.toggled.connect(self.compChanged) right_layout.addWidget(radiobutton) # Create morphology sliders slider_stats = self.det_controller.get_slider_values() self.sliders = {} for slider_name in slider_stats.keys(): slider_label = QLabel() slider_label.setText(slider_name) slider = QSlider(Qt.Horizontal) slider.setFocusPolicy(Qt.StrongFocus) slider.setTickPosition(QSlider.TicksBelow) slider.setTickInterval(10) slider.setSingleStep(2) slider.slider_name = slider_name slider.valueChanged.connect(self.sliderChanged) slider.setValue(slider_stats[slider_name]) self.sliders[slider_name] = slider right_layout.addWidget(slider_label) right_layout.addWidget(slider) # Add store contour button clearBtn = QPushButton("Clear data for color") clearBtn.pressed.connect(self.clearColor) right_layout.addWidget(clearBtn) # Add store contour button sizeBtn = QPushButton("Save contour") sizeBtn.pressed.connect(self.saveContour) right_layout.addWidget(sizeBtn) # Add store contour button sizeBtn = QPushButton("Clear contours") sizeBtn.pressed.connect(self.clearContour) right_layout.addWidget(sizeBtn) # Add a text area self.results = QTextEdit() right_layout.addWidget(self.results) # Add click message field self.click_text = QLabel("") left_layout.addWidget(self.click_text) # Merge layouts center_layout.addLayout(left_layout) center_layout.addLayout(right_layout) layout.addLayout(center_layout) # Set the layout self.setLayout(layout) self.setWindowTitle("Leprechaun Detector") self.setFixedSize(1000, 900)