refactoring

This commit is contained in:
2022-11-24 10:52:38 +03:00
parent c567ba6273
commit c6e36a2f72
4 changed files with 352 additions and 367 deletions

View File

@@ -1,13 +1,17 @@
import sys
import cv2
import numpy
import numpy
from PyQt5.QtGui import QImage, QPixmap
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QFileDialog,QComboBox,QMessageBox
from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QVBoxLayout, QHBoxLayout, QPushButton, QFileDialog, \
QComboBox, QMessageBox
from PyQt5.QtCore import Qt
from matplotlib import pyplot as plt
class Example(QWidget):
def __init__(self):
super().__init__()
self.image2 = None
self.image = None
self.label = QLabel()
self.initUI()
@@ -22,11 +26,10 @@ class Example(QWidget):
btn_procesar = QPushButton('Сохранить изображение')
btn_procesar.clicked.connect(self.saveImage)
f=open("Operate.txt","r")
attr=f.read().splitlines()
f = open("Operate.txt", "r")
attr = f.read().splitlines()
f.close()
self.oper=QComboBox()
self.oper = QComboBox()
self.oper.addItems(attr)
self.oper.currentIndexChanged.connect(self.combobox)
@@ -43,25 +46,21 @@ class Example(QWidget):
self.show()
def openImage(self):
self.filename, _ = QFileDialog.getOpenFileName(None, 'Buscar Imagen', '.', 'Image Files (*.png *.jpg *.jpeg *.bmp)')
self.filename, _ = QFileDialog.getOpenFileName(None, 'Buscar Imagen', '.',
'Image Files (*.png *.jpg *.jpeg *.bmp)')
if self.filename:
with open(self.filename, "rb") as file:
data = numpy.array(bytearray(file.read()))
self.image = cv2.imdecode(data, cv2.IMREAD_UNCHANGED)
self.image = cv2.imdecode(data, cv2.IMREAD_UNCHANGED)
self.mostrarImagen(self.image)
self.image2=self.image
self.image2 = self.image
def saveImage(self):
filename = QFileDialog.getSaveFileName(self,"QFileDialog.getSaveFileName()","","Image Files (*.jpg)")
img=self.image2
cv2.imwrite(filename[0],img)
filename = QFileDialog.getSaveFileName(self, "QFileDialog.getSaveFileName()", "", "Image Files (*.jpg)")
img = self.image2
cv2.imwrite(filename[0], img)
def mostrarImagen(self,s):
def mostrarImagen(self, s):
size = s.shape
step = s.size / size[0]
qformat = QImage.Format_Indexed8
@@ -74,198 +73,193 @@ class Example(QWidget):
img = img.rgbSwapped()
self.label.setPixmap(QPixmap.fromImage(img))
self.resize(self.label.pixmap().size())
def combobox(self, index):
if index==0:
def combobox(self, index):
if index == 0:
self.i0()
if index==1:
if index == 1:
self.i1()
if index==2:
if index == 2:
self.i2()
if index==3:
if index == 3:
self.i3()
if index==4:
if index == 4:
self.i4()
if index==5:
if index == 5:
self.i5()
if index==6:
if index == 6:
self.i6()
if index==7:
if index == 7:
self.i7()
if index==8:
if index == 8:
self.i8()
if index==9:
if index == 9:
self.i9()
if index==10:
if index == 10:
self.i10()
if index==11:
if index == 11:
self.i11()
if index==12:
if index == 12:
self.i12()
if index==13:
if index == 13:
self.i13()
if index==14:
if index == 14:
self.i14()
if index==15:
if index == 15:
self.i15()
if index==16:
if index == 16:
self.i16()
if index==17:
if index == 17:
self.i17()
if index==18:
if index == 18:
self.i18()
if index==19:
if index == 19:
self.i19()
if index==20:
if index == 20:
self.i20()
def i0(self):
self.image2=self.image
self.image2 = self.image
self.mostrarImagen(self.image)
def i1(self):
self.image2=self.image
kernel = numpy.array([[-0.1,0.2,-0.1],[0.2,3.0,0.2],[-0.1,0.2,-0.1]])
self.image2=cv2.filter2D(self.image2,-1,kernel)
self.image2 = self.image
kernel = numpy.array([[-0.1, 0.2, -0.1], [0.2, 3.0, 0.2], [-0.1, 0.2, -0.1]])
self.image2 = cv2.filter2D(self.image2, -1, kernel)
self.mostrarImagen(self.image2)
def i2(self):
self.image2=self.image
self.image2 = cv2.blur(self.image2,(5,5))
self.image2 = self.image
self.image2 = cv2.blur(self.image2, (5, 5))
self.mostrarImagen(self.image2)
def i3(self):
self.image2=self.image
self.image2 = cv2.medianBlur(self.image2,5)
self.image2 = self.image
self.image2 = cv2.medianBlur(self.image2, 5)
self.mostrarImagen(self.image2)
def i4(self):
self.image2=self.image
self.image2 = cv2.GaussianBlur(self.image2, (9,9),cv2.BORDER_DEFAULT)
self.image2 = self.image
self.image2 = cv2.GaussianBlur(self.image2, (9, 9), cv2.BORDER_DEFAULT)
self.mostrarImagen(self.image2)
def i5(self):
self.image2=self.image
self.image2 = self.image
self.image2 = cv2.erode(self.image2, numpy.ones((11, 11)))
self.mostrarImagen(self.image2)
def i6(self):
self.image2=self.image
self.image2 = self.image
self.image2 = cv2.dilate(self.image2, numpy.ones((11, 11)))
self.mostrarImagen(self.image2)
def i7(self):
self.image2=self.image
kernel = numpy.ones((6,6),numpy.uint8)
self.image2=cv2.morphologyEx(self.image2, cv2.MORPH_OPEN, kernel,iterations = 1)
self.image2 = self.image
kernel = numpy.ones((6, 6), numpy.uint8)
self.image2 = cv2.morphologyEx(self.image2, cv2.MORPH_OPEN, kernel, iterations=1)
self.mostrarImagen(self.image2)
def i8(self):
self.image2=self.image
kernel = numpy.ones((6,6),numpy.uint8)
self.image2=cv2.morphologyEx(self.image2, cv2.MORPH_CLOSE, kernel,iterations = 1)
self.image2 = self.image
kernel = numpy.ones((6, 6), numpy.uint8)
self.image2 = cv2.morphologyEx(self.image2, cv2.MORPH_CLOSE, kernel, iterations=1)
self.mostrarImagen(self.image2)
def i9(self):
self.image2=self.image
kernel = numpy.ones((6,6),numpy.uint8)
self.image2=cv2.morphologyEx(self.image2, cv2.MORPH_GRADIENT, kernel,iterations = 1)
self.image2 = self.image
kernel = numpy.ones((6, 6), numpy.uint8)
self.image2 = cv2.morphologyEx(self.image2, cv2.MORPH_GRADIENT, kernel, iterations=1)
self.mostrarImagen(self.image2)
def i10(self):
self.image2=self.image
kernel = numpy.ones((6,6),numpy.uint8)
self.image2=cv2.morphologyEx(self.image2, cv2.MORPH_TOPHAT, kernel,iterations = 1)
self.image2 = self.image
kernel = numpy.ones((6, 6), numpy.uint8)
self.image2 = cv2.morphologyEx(self.image2, cv2.MORPH_TOPHAT, kernel, iterations=1)
self.mostrarImagen(self.image2)
def i11(self):
self.image2=self.image
kernel = numpy.ones((6,6),numpy.uint8)
self.image2=cv2.morphologyEx(self.image2, cv2.MORPH_BLACKHAT, kernel,iterations = 1)
self.image2 = self.image
kernel = numpy.ones((6, 6), numpy.uint8)
self.image2 = cv2.morphologyEx(self.image2, cv2.MORPH_BLACKHAT, kernel, iterations=1)
self.mostrarImagen(self.image2)
def i12(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2,(3,3),0)
self.image2 = cv2.Sobel(self.image2,cv2.CV_64F,1,0,ksize=5)
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2, (3, 3), 0)
self.image2 = cv2.Sobel(self.image2, cv2.CV_64F, 1, 0, ksize=5)
self.mostrarImagen(self.image2)
def i13(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2,(3,3),0)
self.image2 = cv2.Sobel(self.image2,cv2.CV_64F,0,1,ksize=5)
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2, (3, 3), 0)
self.image2 = cv2.Sobel(self.image2, cv2.CV_64F, 0, 1, ksize=5)
self.mostrarImagen(self.image2)
def i14(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2,(3,3),0)
self.image2 = cv2.Sobel(self.image2,cv2.CV_8UC1,0,1,ksize=5)
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_BGR2GRAY)
self.image2 = cv2.GaussianBlur(self.image2, (3, 3), 0)
self.image2 = cv2.Sobel(self.image2, cv2.CV_8UC1, 0, 1, ksize=5)
self.mostrarImagen(self.image2)
def i15(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_RGB2GRAY)
self.image2 = cv2.GaussianBlur(self.image2,(3,3),0)
self.image2 = cv2.Laplacian(self.image2,cv2.CV_64F)
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_RGB2GRAY)
self.image2 = cv2.GaussianBlur(self.image2, (3, 3), 0)
self.image2 = cv2.Laplacian(self.image2, cv2.CV_64F)
self.mostrarImagen(self.image2)
def i16(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_RGB2GRAY)
self.image2 = cv2.blur(self.image2,(5,5))
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_RGB2GRAY)
self.image2 = cv2.blur(self.image2, (5, 5))
self.image2 = cv2.Canny(self.image2, 100, 100)
self.mostrarImagen(self.image2)
def i17(self):
self.image2=self.image
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv2.calcHist([self.image2],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
self.image2 = self.image
color = ('b', 'g', 'r')
for i, col in enumerate(color):
histr = cv2.calcHist([self.image2], [i], None, [256], [0, 256])
plt.plot(histr, color=col)
plt.xlim([0, 256])
plt.show()
def i18(self):
self.image2=self.image
self.image2 = cv2.cvtColor(self.image2,cv2.COLOR_RGB2GRAY)
self.image2 = self.image
self.image2 = cv2.cvtColor(self.image2, cv2.COLOR_RGB2GRAY)
self.image2 = cv2.equalizeHist(self.image2)
self.mostrarImagen(self.image2)
def i19(self):
self.image2=self.image
self.image2 = cv2.line(self.image2,(15,15),(270,270),(76,187,23),10)#линия
self.image2 = cv2.rectangle(self.image2,(20,20),(100,100),(0,0,255),10)#нарисуем четырехугольник
self.image2 = cv2.circle(self.image2,(100,100),40,(0,255,0),10)#нарисуем круг
self.image=self.image2
self.image2 = self.image
self.image2 = cv2.line(self.image2, (15, 15), (270, 270), (76, 187, 23), 10) # линия
self.image2 = cv2.rectangle(self.image2, (20, 20), (100, 100), (0, 0, 255), 10) # нарисуем четырехугольник
self.image2 = cv2.circle(self.image2, (100, 100), 40, (0, 255, 0), 10) # нарисуем круг
self.image = self.image2
self.mostrarImagen(self.image2)
def i20(self):
if self.filename:
with open(self.filename, "rb") as file:
data = numpy.array(bytearray(file.read()))
self.image = cv2.imdecode(data, cv2.IMREAD_UNCHANGED)
self.image = cv2.imdecode(data, cv2.IMREAD_UNCHANGED)
self.mostrarImagen(self.image)
self.mostrarImagen(self.image)
self.image2=self.image
self.image2 = self.image
def closeEvent(self, event):
close = QMessageBox.question(self,"Выход","Вы хотите завершить работу?",QMessageBox.Yes | QMessageBox.No)
close = QMessageBox.question(self, "Выход", "Вы хотите завершить работу?", QMessageBox.Yes | QMessageBox.No)
if close == QMessageBox.Yes:
event.accept()
else:
event.ignore()
if __name__ == '__main__':
app = QApplication(sys.argv)
win = Example()
sys.exit(app.exec_())
sys.exit(app.exec_())