在菜单edit和鼠标右键 增加图片左右旋转功能 且有标注框的情况下不可以旋转,优化代码
This commit is contained in:
parent
4df7ada91d
commit
ca6fabf433
|
@ -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
Loading…
Reference in New Issue