refactoring
This commit is contained in:
240
lab2_2/lab2_2.py
240
lab2_2/lab2_2.py
@@ -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_())
|
||||
|
Reference in New Issue
Block a user