支持调整顶点大小以及删除顶点
This commit is contained in:
parent
fb0205d993
commit
010b8667ca
@ -21,4 +21,5 @@ label:
|
|||||||
- color: '#5c3566'
|
- color: '#5c3566'
|
||||||
name: fence
|
name: fence
|
||||||
language: en
|
language: en
|
||||||
mask_alpha: 0.6
|
mask_alpha: 0.4
|
||||||
|
vertex_size: 2
|
||||||
|
@ -102,7 +102,6 @@ class AnnosDockWidget(QtWidgets.QWidget, Ui_Form):
|
|||||||
|
|
||||||
def set_polygon_selected(self):
|
def set_polygon_selected(self):
|
||||||
items = self.listWidget.selectedItems()
|
items = self.listWidget.selectedItems()
|
||||||
|
|
||||||
have_selected = True if items else False
|
have_selected = True if items else False
|
||||||
if have_selected:
|
if have_selected:
|
||||||
self.mainwindow.scene.change_mode_to_edit()
|
self.mainwindow.scene.change_mode_to_edit()
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
# @Author : LG
|
# @Author : LG
|
||||||
|
|
||||||
from PyQt5 import QtWidgets, QtGui, QtCore
|
from PyQt5 import QtWidgets, QtGui, QtCore
|
||||||
from widgets.polygon import Polygon
|
from widgets.polygon import Polygon, Vertex
|
||||||
from configs import STATUSMode, CLICKMode, DRAWMode, CONTOURMode
|
from configs import STATUSMode, CLICKMode, DRAWMode, CONTOURMode
|
||||||
from PIL import Image
|
from PIL import Image
|
||||||
import numpy as np
|
import numpy as np
|
||||||
@ -300,12 +300,16 @@ class AnnotationScene(QtWidgets.QGraphicsScene):
|
|||||||
def delete_selected_graph(self):
|
def delete_selected_graph(self):
|
||||||
deleted_layer = None
|
deleted_layer = None
|
||||||
for item in self.selectedItems():
|
for item in self.selectedItems():
|
||||||
if item in self.mainwindow.polygons:
|
if isinstance(item, Polygon) and (item in self.mainwindow.polygons):
|
||||||
self.mainwindow.polygons.remove(item)
|
self.mainwindow.polygons.remove(item)
|
||||||
item.delete()
|
item.delete()
|
||||||
self.removeItem(item)
|
self.removeItem(item)
|
||||||
deleted_layer = item.zValue()
|
deleted_layer = item.zValue()
|
||||||
del item
|
del item
|
||||||
|
elif isinstance(item, Vertex):
|
||||||
|
index = item.polygon.vertexs.index(item)
|
||||||
|
item.polygon.removePoint(index)
|
||||||
|
|
||||||
if deleted_layer is not None:
|
if deleted_layer is not None:
|
||||||
for p in self.mainwindow.polygons:
|
for p in self.mainwindow.polygons:
|
||||||
if p.zValue() > deleted_layer:
|
if p.zValue() > deleted_layer:
|
||||||
|
@ -165,16 +165,28 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.pths_actions[model_name] = action
|
self.pths_actions[model_name] = action
|
||||||
self.menuSAM_model.addAction(action)
|
self.menuSAM_model.addAction(action)
|
||||||
|
|
||||||
|
# mask alpha
|
||||||
self.toolBar.addSeparator()
|
self.toolBar.addSeparator()
|
||||||
self.mask_aplha = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal, self)
|
self.mask_aplha = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal, self)
|
||||||
self.mask_aplha.setFixedWidth(50)
|
self.mask_aplha.setFixedWidth(50)
|
||||||
self.mask_aplha.setStatusTip('Mask alpha.')
|
self.mask_aplha.setStatusTip('Mask alpha.')
|
||||||
self.mask_aplha.setToolTip('Mask alpha ')
|
self.mask_aplha.setToolTip('Mask alpha')
|
||||||
self.mask_aplha.setMaximum(10)
|
self.mask_aplha.setMaximum(10)
|
||||||
self.mask_aplha.setMinimum(3)
|
self.mask_aplha.setMinimum(3)
|
||||||
self.mask_aplha.valueChanged.connect(self.change_mask_aplha)
|
self.mask_aplha.valueChanged.connect(self.change_mask_aplha)
|
||||||
self.toolBar.addWidget(self.mask_aplha)
|
self.toolBar.addWidget(self.mask_aplha)
|
||||||
|
|
||||||
|
# vertex size
|
||||||
|
self.toolBar.addSeparator()
|
||||||
|
self.vertex_size = QtWidgets.QSlider(QtCore.Qt.Orientation.Horizontal, self)
|
||||||
|
self.vertex_size.setFixedWidth(50)
|
||||||
|
self.vertex_size.setStatusTip('Vertex size.')
|
||||||
|
self.vertex_size.setToolTip('Vertex size')
|
||||||
|
self.vertex_size.setMaximum(10)
|
||||||
|
self.vertex_size.setMinimum(2)
|
||||||
|
self.vertex_size.valueChanged.connect(self.change_vertex_size)
|
||||||
|
self.toolBar.addWidget(self.vertex_size)
|
||||||
|
|
||||||
self.trans = QtCore.QTranslator()
|
self.trans = QtCore.QTranslator()
|
||||||
|
|
||||||
def translate(self, language='zh'):
|
def translate(self, language='zh'):
|
||||||
@ -233,6 +245,9 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.cfg['mask_alpha'] = mask_alpha
|
self.cfg['mask_alpha'] = mask_alpha
|
||||||
self.mask_aplha.setValue(mask_alpha*10)
|
self.mask_aplha.setValue(mask_alpha*10)
|
||||||
|
|
||||||
|
vertex_size = self.cfg.get('vertex_size', 2)
|
||||||
|
self.cfg['vertex_size'] = int(vertex_size)
|
||||||
|
|
||||||
model_name = self.cfg.get('model_name', '')
|
model_name = self.cfg.get('model_name', '')
|
||||||
self.init_segment_anything(model_name)
|
self.init_segment_anything(model_name)
|
||||||
|
|
||||||
@ -558,6 +573,12 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
|
|||||||
self.scene.update_mask()
|
self.scene.update_mask()
|
||||||
self.cfg['mask_alpha'] = value
|
self.cfg['mask_alpha'] = value
|
||||||
|
|
||||||
|
def change_vertex_size(self):
|
||||||
|
value = self.vertex_size.value()
|
||||||
|
self.cfg['vertex_size'] = value
|
||||||
|
if self.current_index is not None:
|
||||||
|
self.show_image(self.current_index)
|
||||||
|
|
||||||
def ISAT_to_VOC(self):
|
def ISAT_to_VOC(self):
|
||||||
self.ISAT_to_VOC_dialog.reset_gui()
|
self.ISAT_to_VOC_dialog.reset_gui()
|
||||||
self.ISAT_to_VOC_dialog.show()
|
self.ISAT_to_VOC_dialog.show()
|
||||||
|
@ -6,14 +6,13 @@ from annotation import Object
|
|||||||
import typing
|
import typing
|
||||||
|
|
||||||
class Vertex(QtWidgets.QGraphicsPathItem):
|
class Vertex(QtWidgets.QGraphicsPathItem):
|
||||||
def __init__(self, polygon, index, color):
|
def __init__(self, polygon, color, nohover_size=2):
|
||||||
super(Vertex, self).__init__()
|
super(Vertex, self).__init__()
|
||||||
self.polygon = polygon
|
self.polygon = polygon
|
||||||
self.index = index
|
|
||||||
self.color = color
|
self.color = color
|
||||||
|
|
||||||
self.hover_size = 3
|
self.nohover_size = nohover_size
|
||||||
self.nohover_size = 2
|
self.hover_size = self.nohover_size + 2
|
||||||
self.line_width = 0
|
self.line_width = 0
|
||||||
|
|
||||||
self.nohover = QtGui.QPainterPath()
|
self.nohover = QtGui.QPainterPath()
|
||||||
@ -32,7 +31,8 @@ class Vertex(QtWidgets.QGraphicsPathItem):
|
|||||||
self.setZValue(1e5)
|
self.setZValue(1e5)
|
||||||
|
|
||||||
def itemChange(self, change: 'QtWidgets.QGraphicsItem.GraphicsItemChange', value: typing.Any):
|
def itemChange(self, change: 'QtWidgets.QGraphicsItem.GraphicsItemChange', value: typing.Any):
|
||||||
|
if change == QtWidgets.QGraphicsItem.GraphicsItemChange.ItemSelectedHasChanged:
|
||||||
|
self.scene().mainwindow.actionDelete.setEnabled(self.isSelected())
|
||||||
if change == QtWidgets.QGraphicsItem.GraphicsItemChange.ItemPositionChange and self.isEnabled():
|
if change == QtWidgets.QGraphicsItem.GraphicsItemChange.ItemPositionChange and self.isEnabled():
|
||||||
# 限制顶点移动到图外
|
# 限制顶点移动到图外
|
||||||
if value.x() < 0:
|
if value.x() < 0:
|
||||||
@ -43,8 +43,8 @@ class Vertex(QtWidgets.QGraphicsPathItem):
|
|||||||
value.setY(0)
|
value.setY(0)
|
||||||
if value.y() > self.scene().height()-1:
|
if value.y() > self.scene().height()-1:
|
||||||
value.setY(self.scene().height()-1)
|
value.setY(self.scene().height()-1)
|
||||||
|
index = self.polygon.vertexs.index(self)
|
||||||
self.polygon.movePoint(self.index, value)
|
self.polygon.movePoint(index, value)
|
||||||
|
|
||||||
return super(Vertex, self).itemChange(change, value)
|
return super(Vertex, self).itemChange(change, value)
|
||||||
|
|
||||||
@ -85,7 +85,7 @@ class Polygon(QtWidgets.QGraphicsPolygonItem):
|
|||||||
|
|
||||||
def addPoint(self, point):
|
def addPoint(self, point):
|
||||||
self.points.append(point)
|
self.points.append(point)
|
||||||
vertex = Vertex(self, len(self.points)-1, self.color)
|
vertex = Vertex(self, self.color, self.scene().mainwindow.cfg['vertex_size'])
|
||||||
# 添加路径点
|
# 添加路径点
|
||||||
self.scene().addItem(vertex)
|
self.scene().addItem(vertex)
|
||||||
self.vertexs.append(vertex)
|
self.vertexs.append(vertex)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user