在菜单edit和鼠标右键 增加图片左右旋转功能 且有标注框的情况下不可以旋转,优化代码

This commit is contained in:
Alchemist_W 2021-07-22 14:31:43 +08:00
parent 4df7ada91d
commit ca6fabf433
2 changed files with 5799 additions and 9165 deletions

View File

@ -31,7 +31,7 @@ import cv2
__dir__ = os.path.dirname(os.path.abspath(__file__)) __dir__ = os.path.dirname(os.path.abspath(__file__))
import numpy as np import numpy as np
from labelme import LabelFile
sys.path.append(__dir__) sys.path.append(__dir__)
sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) sys.path.append(os.path.abspath(os.path.join(__dir__, '../..')))
@ -795,47 +795,50 @@ class MainWindow(QMainWindow, WindowMixin):
self.actions.create.setEnabled(False) self.actions.create.setEnabled(False)
self.actions.undoLastPoint.setEnabled(True) self.actions.undoLastPoint.setEnabled(True)
def rotateImg(self, filename, k, _value):
self.actions.rotateRight.setEnabled(_value)
pix = cv2.imread(filename)
pix = np.rot90(pix, k)
cv2.imwrite(filename, pix)
self.canvas.update()
self.loadFile(filename)
def rotateImgWarn(self):
if self.lang == 'ch':
self.msgBox.warning (self, "提示", "\n 该图片已经有标注框,旋转操作会打乱标注,建议清除标注框后旋转。")
else:
self.msgBox.warning (self, "Warn", "\n The picture already has a label box, and rotation will disrupt the label.\
It is recommended to clear the label box and rotate it.")
def rotateLeftImg(self, _value=False): def rotateLeftImg(self, _value=False):
filename = self.mImgList[self.currIndex] filename = self.mImgList[self.currIndex]
if os.path.exists(filename): if os.path.exists(filename):
_value = True if self.itemsToShapesbox:
self.actions.rotateLeft.setEnabled(_value) self.rotateImgWarn()
pix = cv2.imread(filename) else:
pix = np.rot90(pix, k=1) _value = True
cv2.imwrite(filename, pix) self.rotateImg(filename=filename, k=1, _value=_value)
self.canvas.update()
self.loadFile(filename)
else: else:
_value = False _value = False
if self.lang == 'ch': self.rotateImgWarn()
self.msgBox.warning(self, "提示", "\n 请从图片列表选择一个需要旋转的图片,且确保图片存在!") self.actions.rotateRight.setEnabled(_value)
else:
self.msgBox.warning(self, "Warn", "\n Please select an image from the list of images to rotate and make sure the image exists!")
self.actions.rotateLeft.setEnabled(_value)
def rotateRightImg(self, _value=False): def rotateRightImg(self, _value=False):
filename = self.mImgList[self.currIndex] filename = self.mImgList[self.currIndex]
if os.path.exists(filename): if os.path.exists(filename):
_value = True if self.itemsToShapesbox:
self.actions.rotateRight.setEnabled(_value) self.rotateImgWarn()
pix = cv2.imread(filename) else:
pix = np.rot90(pix, k=-1) _value = True
cv2.imwrite(filename, pix) self.rotateImg(filename=filename, k=-1, _value=_value)
self.canvas.update()
self.loadFile(filename)
else: else:
_value = False _value = False
self.rotateImgWarn()
if self.lang == 'ch':
self.msgBox.warning(self, "提示", "\n 请从图片列表选择一个需要旋转的图片,且确保图片存在!")
else:
self.msgBox.warning(self, "Warn", "\n Please select an image from the list of images to rotate and make sure the image exists!")
self.actions.rotateRight.setEnabled(_value) self.actions.rotateRight.setEnabled(_value)
def toggleDrawingSensitive(self, drawing=True): def toggleDrawingSensitive(self, drawing=True):

File diff suppressed because it is too large Load Diff