예제 #1
0
    def __init__(self, parent, clobj_widget, name, screenshots, segments):
        super(QuerySummary, self).__init__(parent)
        self.clobj_widget = clobj_widget
        self.setWindowTitle("Summary")
        self.scroll = QScrollArea(self)
        self.scroll.setWidgetResizable(True)
        self.setWidget(self.scroll)
        self.inner = QWidget(self.scroll)
        self.scroll.setWidget(self.inner)
        self.inner.setLayout(QVBoxLayout())
        self.name_edit = QLineEdit(name, self)
        self.inner.layout().addWidget(self.name_edit)
        self.old_name = name
        self.text_field_desc = QTextEdit(self)
        self.text_field_raw = QTextEdit(self)
        self.text_field_desc.setReadOnly(True)
        self.text_field_raw.setReadOnly(True)
        self.name_edit.editingFinished.connect(self.on_name_changed)

        self.screenshots = screenshots
        self.segments = segments

        self.inner.layout().addWidget(self.text_field_desc)
        self.inner.layout().addWidget(
            ExpandableWidget(self, "Classification Objects", self.clobj_widget,
                             True))
        self.inner.layout().addWidget(
            ExpandableWidget(self, "Raw Query", self.text_field_raw, False))

        self.inner.layout().addItem(
            QSpacerItem(0, 0, QSizePolicy.Fixed, QSizePolicy.Expanding))
예제 #2
0
 def add_plot(self, p):
     if p.naming_fields['plot_name'] not in self.controls:
         ctrls = p.get_param_widget()
         self.controls[p.naming_fields['plot_name']] = ctrls
         self.ctrl_container.layout().addWidget(
             ExpandableWidget(self.inner, p.naming_fields['plot_name'],
                              ctrls))
     else:
         p.get_param_widget(w=self.controls[p.naming_fields['plot_name']])
예제 #3
0
    def __init__(self, parent):
        super(PaletteWidget, self).__init__(parent)
        self.palette_tree = None

        self.all_ctrls = QWidget(self)
        self.all_ctrls.setLayout(QVBoxLayout(self.all_ctrls))

        self.setLayout(QVBoxLayout(self))
        self.view = PaletteView(self)
        self.slider = QSlider(Qt.Horizontal, self.all_ctrls)
        self.cb_mode = QComboBox(self.all_ctrls)
        self.cb_mode.addItems(['Layer', 'Full Tree'])
        self.lbl_mode_hint = QLabel("Layer Index:", self.all_ctrls)
        self.lbl_depth = QLabel("0", self.all_ctrls)
        self.lbl_depth.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)
        self.layout().addWidget(self.view)
        self.cb_show_grid = QCheckBox("Show Grid", self.all_ctrls)

        self.cb_sorting = QComboBox(self.all_ctrls)
        self.cb_sorting.addItems(['Cluster', 'Frequency', "Hilbert"])

        self.layout().addWidget(
            ExpandableWidget(self, "Controls", self.all_ctrls, popup=False))

        self.hbox_slider = QVBoxLayout(self.all_ctrls)
        self.hbox_ctrl = QVBoxLayout(self.all_ctrls)
        self.all_ctrls.layout().addItem(self.hbox_ctrl)
        self.all_ctrls.layout().addItem(self.hbox_slider)

        self.hbox_ctrl.addWidget(QLabel("Mode: ", self.all_ctrls))
        self.hbox_ctrl.addWidget(self.cb_mode)
        self.hbox_ctrl.addItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
        self.hbox_ctrl.addWidget(self.cb_show_grid)
        self.hbox_ctrl.addItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
        self.hbox_ctrl.addWidget(QLabel("Sorting: ", self.all_ctrls))
        self.hbox_ctrl.addWidget(self.cb_sorting)

        self.slider.setValue(10)

        self.hbox_slider.addWidget(self.lbl_mode_hint)
        self.hbox_slider.addWidget(self.slider)
        self.hbox_slider.addWidget(self.lbl_depth)

        self.slider.valueChanged.connect(self.draw_palette)
        self.cb_mode.currentTextChanged.connect(self.on_settings_changed)
        self.cb_show_grid.stateChanged.connect(self.on_settings_changed)
        self.cb_sorting.currentTextChanged.connect(self.on_settings_changed)
예제 #4
0
    def __init__(self, main_window):
        super(ColorimetryLiveWidget, self).__init__(main_window,
                                                    limit_size=False)
        self.setWindowTitle("Colorimetry")
        self.lt = QVBoxLayout(self)
        self.central = QWidget()
        self.central.setFixedWidth(1)
        self.central.setLayout(self.lt)

        self.visibilityChanged.connect(
            self.main_window.frame_update_worker.set_colormetry_update)
        self.inner.setCentralWidget(self.central)
        self.use_tab_mode = False

        self.is_drawing = False

        self.m_visualization = self.inner.menuBar().addMenu("Visualizations")
        self.a_palette = self.m_visualization.addAction("Palette")
        self.a_palette_ab = self.m_visualization.addAction("Palette AB")
        self.a_palette_dt = self.m_visualization.addAction("Palette dT")
        self.a_hist = self.m_visualization.addAction("Histogram dT")
        self.a_spatial = self.m_visualization.addAction(
            "Spatial Complexity dT")

        # self.vis_tab = QTabWidget(self)
        # self.lt.addWidget(self.vis_tab)
        self.hilbert_table, self.hilbert_colors = create_hilbert_transform(16)

        self.worker_ready = True
        self.latest_worker_data = None

        self.drawing_worker = ColorimetryWorker(self.work)
        self.worker_thread = QThread()
        self.draw.connect(self.drawing_worker.run)
        self.drawing_worker.onProcessingDone.connect(self.on_worker_ready)
        self.drawing_worker.moveToThread(self.worker_thread)
        self.worker_thread.start()

        self.current_data = None
        # self.h_bgr = create_hilbert_color_pattern(8, multiplier=32, color_space=cv2.COLOR_Lab2RGB)
        # self.h_indices = hilbert_mapping_3d(8, np.zeros(shape=(8,8,8)), HilbertMode.Indices_All)
        #
        # self.h_indices = np.array(self.h_indices)
        # self.h_indices = np.array([self.h_indices[:, 0],self.h_indices[:, 1],self.h_indices[:, 2]])
        #
        # self.histogram = HistogramVis(self)
        # self.histogram.plot(8**3 * [1.0], self.h_bgr)
        # self.histogram.view.setYRange(min = 0.1, max = 1.0)
        # self.histogram.view.setXRange(min = 0, max = 255)

        # self.palette = PaletteVis(self)
        self.palette = PaletteWidget(self)
        self.lab_palette = PaletteLABWidget(self)
        self.time_palette = PaletteTimeWidget(self)
        self.hilbert_vis = HistogramVis(self)

        self.spatial_complexity_vis = LinePlot(self, x_label_format="ms")
        lt_spatial = QWidget()
        lt_spatial.setLayout(QVBoxLayout())
        lt_spatial.layout().addWidget(self.spatial_complexity_vis)
        self.spatial_complexity_param = ExpandableWidget(
            self, "Controls", self.spatial_complexity_vis.get_param_widget())
        lt_spatial.layout().addWidget(self.spatial_complexity_param)

        self.hilbert_param = ExpandableWidget(
            self, "Controls", self.hilbert_vis.get_param_widget(), popup=True)
        lt_hilbert = QWidget()
        lt_hilbert.setLayout(QVBoxLayout())
        lt_hilbert.layout().addWidget(self.hilbert_vis)
        lt_hilbert.layout().addWidget(self.hilbert_param)

        #
        # self.lt.addWidget(self.palette)
        if self.use_tab_mode:
            self.vis_tab.addTab(self.palette, "Tree-Palette")
            self.vis_tab.addTab(self.lab_palette, "LAB-Palette")
            self.vis_tab.addTab(self.time_palette, "Time Palette")
            self.vis_tab.addTab(lt_hilbert, "Color Histogram")
            self.vis_tab.addTab(lt_spatial, "Spatial Complexity")
            self.vis_tab.currentChanged.connect(self.on_tab_changed)
        else:
            t1 = ESimpleDockWidget(self.inner, self.palette, "Palette")
            t2 = ESimpleDockWidget(self.inner, self.lab_palette,
                                   "Space Palette")
            t3 = ESimpleDockWidget(self.inner, self.time_palette,
                                   "Time Palette")
            t3.visibilityChanged.connect(self.on_tab_changed)
            t4 = ESimpleDockWidget(self.inner, lt_hilbert, "Histogram")
            t5 = ESimpleDockWidget(self.inner, lt_spatial, "Spatial Frequency")

            self.a_palette.triggered.connect(t1.show)
            self.a_palette_ab.triggered.connect(t2.show)
            self.a_palette_dt.triggered.connect(t3.show)
            self.a_hist.triggered.connect(t4.show)
            self.a_spatial.triggered.connect(t5.show)

            self.inner.addDockWidget(Qt.LeftDockWidgetArea, t1, Qt.Horizontal)
            self.inner.addDockWidget(Qt.RightDockWidgetArea, t2, Qt.Horizontal)
            self.inner.addDockWidget(Qt.BottomDockWidgetArea, t3,
                                     Qt.Horizontal)
            self.inner.addDockWidget(Qt.RightDockWidgetArea, t4, Qt.Horizontal)
            self.inner.addDockWidget(Qt.RightDockWidgetArea, t5, Qt.Horizontal)

            t3.hide()
            t4.hide()
            t5.hide()

        self.main_window.onTimeStep.connect(self.on_time_step)
        self.visibilityChanged.connect(self.on_visibility_changed)
    def set_manager(self, screenshot_manager):
        # self.tab = QTabWidget(self.inner)
        # self.tab.addTab(screenshot_manager, "Screenshot Manager")
        self.manager_dock = ESimpleDockWidget(self.inner, screenshot_manager,
                                              "Screenshots")
        self.inner.addDockWidget(Qt.TopDockWidgetArea, self.manager_dock,
                                 Qt.Horizontal)
        # t = QWidget()
        # t.setMinimumHeight(1)
        # t.setMinimumWidth(1)
        # self.inner.setCentralWidget(t)

        self.ab_view = ImagePlotCircular(self)
        self.ab_ctrls = self.ab_view.get_param_widget()
        w = QWidget(self.tab)
        w.setLayout(QVBoxLayout())
        w.layout().addWidget(self.ab_view)
        w.layout().addWidget(
            ExpandableWidget(w, "Plot Controls", self.ab_ctrls, popup=True))
        # self.tab.addTab(w, "AB-Plane")
        self.la_dock = ESimpleDockWidget(self.inner, w, "LA-View")
        self.inner.addDockWidget(Qt.TopDockWidgetArea, self.la_dock,
                                 Qt.Horizontal)

        self.color_dt = ImagePlotTime(self)
        self.color_dt_ctrls = self.color_dt.get_param_widget()
        # hl4 = QHBoxLayout(self.color_dt_ctrls)
        # hl4.addWidget(QLabel("Channel:", self.color_dt_ctrls))
        # self.color_dt_ctrls.layout().addItem(hl4)
        # cbox_channel = QComboBox(self.color_dt_ctrls)
        # cbox_channel.addItems(["Saturation", "Hue", "Chroma", "Luminance", "A", "B"])
        # cbox_channel.currentTextChanged.connect(self.color_dt_mode_changed)
        # hl4.addWidget(cbox_channel)

        self.lc_view = ImagePlotPlane(self, range_y=[0, 255])
        self.color_lc_view = self.lc_view.get_param_widget()
        w3 = QWidget()
        w3.setLayout(QVBoxLayout())
        w3.layout().addWidget(self.lc_view)
        w3.layout().addWidget(
            ExpandableWidget(w3,
                             "Plot Controls",
                             self.color_lc_view,
                             popup=True))
        self.lc_dock = ESimpleDockWidget(self.inner, w3, "LC-View")
        self.inner.addDockWidget(Qt.TopDockWidgetArea, self.lc_dock,
                                 Qt.Horizontal)
        # self.tab.addTab(w3, "LC-Plane")

        w2 = QWidget()
        w2.setLayout(QVBoxLayout())
        w2.layout().addWidget(self.color_dt)
        w2.layout().addWidget(
            ExpandableWidget(w2,
                             "Plot Controls",
                             self.color_dt_ctrls,
                             popup=True))
        self.dt_dock = ESimpleDockWidget(self.inner, w2, "Color-dT")
        self.inner.addDockWidget(Qt.BottomDockWidgetArea, self.dt_dock,
                                 Qt.Horizontal)
        # self.tab.addTab(w2, "Color-dt")

        self.setWidget(self.tab)

        self.inner.tabifyDockWidget(self.manager_dock, self.la_dock)
        self.inner.tabifyDockWidget(self.la_dock, self.lc_dock)
        self.manager_dock.raise_()
        self.dt_dock.hide()
        self.screenshot_manager = screenshot_manager
        self.create_bottom_bar()

        self.a_scr_plot.triggered.connect(self.manager_dock.show)
        self.a_ab_plot.triggered.connect(self.la_dock.show)
        self.a_lc_plot.triggered.connect(self.lc_dock.show)
        self.a_dt_plot.triggered.connect(self.dt_dock.show)

        self.main_window.currentClassificationObjectChanged.connect(
            self.screenshot_manager.on_classification_object_changed)
예제 #6
0
    def __init__(self, parent):
        super(PaletteLABWidget, self).__init__(parent)
        self.palette_tree = None
        self.setLayout(QVBoxLayout(self))
        self.view = PaletteLABView(self)

        self.w_ctrls2 = QWidget(self)
        self.w_ctrls2.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
        self.w_ctrls2.setLayout(QVBoxLayout(self.w_ctrls2))

        self.cb_mode = QComboBox(self.w_ctrls2)
        self.cb_mode.addItems(['Layer', 'Full Tree'])
        self.lbl_mode_hint = QLabel("Layer Index:", self.w_ctrls2)
        self.cb_show_grid = QCheckBox("Show Grid", self.w_ctrls2)

        self.hbox_slider = QHBoxLayout(self.w_ctrls2)
        self.w_ctrls2.layout().addItem(self.hbox_slider)

        self.slider = QSlider(Qt.Horizontal, self.w_ctrls2)
        self.slider_size = QSlider(Qt.Horizontal, self.w_ctrls2)
        self.slider_size.setRange(1, 100)
        self.slider_jitter = QSlider(Qt.Horizontal, self.w_ctrls2)
        self.slider_jitter.setRange(0, 100)
        self.slider_scale = QSlider(Qt.Horizontal, self.w_ctrls2)
        self.slider_scale.setRange(1, 30)

        self.lbl_depth = QLabel("0", self.w_ctrls2)
        self.lbl_depth.setSizePolicy(QSizePolicy.Maximum, QSizePolicy.Maximum)

        self.cb_background = QComboBox(self.w_ctrls2)
        self.cb_background.addItems(
            ['White', "Light-Gray", 'Dark-Gray', 'Black'])
        self.cb_background.setCurrentText("Dark-Gray")

        self.hbox_ctrl = QVBoxLayout(self.w_ctrls2)

        self.hbox_ctrl.addWidget(QLabel("Mode: ", self.w_ctrls2))
        self.hbox_ctrl.addWidget(self.cb_mode)
        self.hbox_ctrl.addItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
        self.hbox_ctrl.addWidget(self.cb_show_grid)
        self.hbox_ctrl.addItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Fixed))
        self.hbox_ctrl.addWidget(QLabel("Background: ", self.w_ctrls2))
        self.hbox_ctrl.addWidget(self.cb_background)
        self.btn_ctrls = QPushButton("Show Controls", self.w_ctrls2)
        self.hbox_ctrl.addWidget(self.btn_ctrls)
        self.btn_ctrls.clicked.connect(self.toggle_controls)

        self.hbox_slider.addWidget(self.lbl_mode_hint)
        self.hbox_slider.addWidget(self.slider)
        self.hbox_slider.addWidget(QLabel("n-Merges:", self.w_ctrls2))
        self.hbox_slider.addWidget(self.lbl_depth)

        self.hbox_scale = QHBoxLayout(self.w_ctrls2)
        self.hbox_dot_size = QHBoxLayout(self.w_ctrls2)
        self.hbox_jitter = QHBoxLayout(self.w_ctrls2)

        self.w_ctrls2.layout().addItem(self.hbox_ctrl)
        self.w_ctrls2.layout().addItem(self.hbox_scale)
        self.w_ctrls2.layout().addItem(self.hbox_dot_size)
        self.w_ctrls2.layout().addItem(self.hbox_jitter)

        self.hbox_scale.addWidget(QLabel("Scale:", self.w_ctrls2))
        self.hbox_dot_size.addWidget(QLabel("Dot Size:", self.w_ctrls2))
        self.hbox_jitter.addWidget(QLabel("Jitter:", self.w_ctrls2))

        self.hbox_scale.addWidget(self.slider_scale)
        self.hbox_dot_size.addWidget(self.slider_size)
        self.hbox_jitter.addWidget(self.slider_jitter)

        self.layout().addWidget(self.view)
        # self.layout().addItem(self.hbox_ctrl)
        exp = ExpandableWidget(self, "Controls", self.w_ctrls2, popup=True)
        self.layout().addWidget(exp)
        exp.onClicked.connect(self.draw_palette)

        self.cb_show_grid.setChecked(True)
        self.slider.setValue(12)

        self.slider_jitter.setValue(3)
        self.slider_scale.setValue(2)
        self.slider_size.setValue(2)

        self.slider.valueChanged.connect(self.on_settings_changed)
        self.slider_jitter.valueChanged.connect(self.on_settings_changed)
        self.slider_size.valueChanged.connect(self.on_settings_changed)
        self.slider_scale.valueChanged.connect(self.on_settings_changed)
        self.cb_mode.currentTextChanged.connect(self.on_settings_changed)
        self.cb_show_grid.stateChanged.connect(self.on_settings_changed)
        self.cb_background.currentTextChanged.connect(self.on_settings_changed)

        self.w_ctrls2.setVisible(False)
        self.show()