Initial commit
This commit is contained in:
21
lab2_2/Operate.txt
Normal file
21
lab2_2/Operate.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
1.Image
|
||||
2.Linear filter
|
||||
3.Blur
|
||||
4.Median blur
|
||||
5.GaussianBlur
|
||||
6.Erode
|
||||
7.Dilate
|
||||
8.1.MORPH_MORPH_OPEN
|
||||
8.2.MORPH_MORPH_CLOSE
|
||||
8.3.MORPH_MORPH_GRADIENT
|
||||
8.4.MORPH_MORPH_TOPHAT
|
||||
8.5.MORPH_MORPH_BLACKHAT
|
||||
9.Sobel_X
|
||||
10.Sobel_Y
|
||||
11.Sobel_Gradient
|
||||
12.Laplacian
|
||||
13.Canny
|
||||
14.CalcHist
|
||||
15.EqualizeHist
|
||||
16.Add Figure
|
||||
17.Del Figure
|
271
lab2_2/lab2_2.py
Normal file
271
lab2_2/lab2_2.py
Normal file
@@ -0,0 +1,271 @@
|
||||
import sys
|
||||
import cv2
|
||||
import numpy
|
||||
from PyQt5.QtGui import QImage, QPixmap
|
||||
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.image = None
|
||||
self.label = QLabel()
|
||||
self.initUI()
|
||||
|
||||
def initUI(self):
|
||||
self.label.setText('OpenCV Image')
|
||||
self.label.setAlignment(Qt.AlignCenter)
|
||||
|
||||
btn_open = QPushButton('Открыть изображение')
|
||||
btn_open.clicked.connect(self.openImage)
|
||||
|
||||
btn_procesar = QPushButton('Сохранить изображение')
|
||||
btn_procesar.clicked.connect(self.saveImage)
|
||||
|
||||
|
||||
f=open("Operate.txt","r")
|
||||
attr=f.read().splitlines()
|
||||
f.close()
|
||||
self.oper=QComboBox()
|
||||
self.oper.addItems(attr)
|
||||
self.oper.currentIndexChanged.connect(self.combobox)
|
||||
|
||||
top_bar = QHBoxLayout()
|
||||
top_bar.addWidget(btn_open)
|
||||
top_bar.addWidget(btn_procesar)
|
||||
top_bar.addWidget(self.oper)
|
||||
|
||||
root = QVBoxLayout(self)
|
||||
root.addLayout(top_bar)
|
||||
root.addWidget(self.label)
|
||||
self.resize(540, 574)
|
||||
self.setWindowTitle('ST_2_2')
|
||||
self.show()
|
||||
|
||||
def openImage(self):
|
||||
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.mostrarImagen(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)
|
||||
|
||||
|
||||
|
||||
def mostrarImagen(self,s):
|
||||
size = s.shape
|
||||
step = s.size / size[0]
|
||||
qformat = QImage.Format_Indexed8
|
||||
if len(size) == 3:
|
||||
if size[2] == 4:
|
||||
qformat = QImage.Format_RGBA8888
|
||||
else:
|
||||
qformat = QImage.Format_RGB888
|
||||
img = QImage(s, size[1], size[0], step, qformat)
|
||||
img = img.rgbSwapped()
|
||||
self.label.setPixmap(QPixmap.fromImage(img))
|
||||
self.resize(self.label.pixmap().size())
|
||||
|
||||
|
||||
def combobox(self, index):
|
||||
if index==0:
|
||||
self.i0()
|
||||
if index==1:
|
||||
self.i1()
|
||||
if index==2:
|
||||
self.i2()
|
||||
if index==3:
|
||||
self.i3()
|
||||
if index==4:
|
||||
self.i4()
|
||||
if index==5:
|
||||
self.i5()
|
||||
if index==6:
|
||||
self.i6()
|
||||
if index==7:
|
||||
self.i7()
|
||||
if index==8:
|
||||
self.i8()
|
||||
if index==9:
|
||||
self.i9()
|
||||
if index==10:
|
||||
self.i10()
|
||||
if index==11:
|
||||
self.i11()
|
||||
if index==12:
|
||||
self.i12()
|
||||
if index==13:
|
||||
self.i13()
|
||||
if index==14:
|
||||
self.i14()
|
||||
if index==15:
|
||||
self.i15()
|
||||
if index==16:
|
||||
self.i16()
|
||||
if index==17:
|
||||
self.i17()
|
||||
if index==18:
|
||||
self.i18()
|
||||
if index==19:
|
||||
self.i19()
|
||||
if index==20:
|
||||
self.i20()
|
||||
|
||||
|
||||
def i0(self):
|
||||
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.mostrarImagen(self.image2)
|
||||
|
||||
|
||||
def i2(self):
|
||||
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.mostrarImagen(self.image2)
|
||||
|
||||
def i4(self):
|
||||
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 = cv2.erode(self.image2, numpy.ones((11, 11)))
|
||||
self.mostrarImagen(self.image2)
|
||||
|
||||
def i6(self):
|
||||
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.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.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.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.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.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.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.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.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.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 = 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])
|
||||
plt.show()
|
||||
|
||||
|
||||
def i18(self):
|
||||
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.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.mostrarImagen(self.image)
|
||||
self.mostrarImagen(self.image)
|
||||
self.image2=self.image
|
||||
|
||||
def closeEvent(self, event):
|
||||
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_())
|
Reference in New Issue
Block a user