首先看些效果如下:
具体代码如下:
if __name__ == '__main__':
from muban import Ui_Form
else:
from muban.muban import Ui_Form
from PyQt5.QtWidgets import QWidget, QFileDialog
from PyQt5.QtCore import QFileInfo
import cv2
import numpy as np
from matplotlib.patches import Rectangle
class mubanWindows(QWidget):
"""docstring for mubanWindows"""
# def __init__(self):
# super(mubanWindows, self).__init__()
def init_fun(self):
self.window = Ui_Form()
self.window.setupUi(self)
self.curFile = "匹配变换"
self.window.mb_openmb_btn.clicked.connect(self.mb_openmb_btn_fun)
self.window.mb_opensrc_btn.clicked.connect(self.mb_opensrc_btn_fun)
self.window.mb_startpp_btn.clicked.connect(self.mb_startpp_btn_fun)
self.window.mb_ddxpp_btn.clicked.connect(self.mb_ddxpp_btn_fun)
self.window.H_lines_open_btn.clicked.connect(self.H_lines_open_btn_fun)
self.window.H_yuan_open_btn.clicked.connect(self.H_yuan_open_btn_fun)
self.window.H_lines_bh_btn.clicked.connect(self.H_lines_bh_btn_fun)
self.window.H_yuan_bh_btn.clicked.connect(self.H_yuan_bh_btn_fun)
def userFriendlyCurrentFile(self):
return self.strippedName(self.curFile)
def strippedName(self, fullFileName):
return QFileInfo(fullFileName).fileName()
def H_yuan_bh_btn_fun(self):
img = self.h_yuan_img.copy()
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
method = eval("cv2.HOUGH_" + self.window.H_yuan_method_comboBox.currentText())
dp = self.window.H_yuan_dp_spinBox.value()
circle = self.window.H_yuan_circles_spinBox.value()
param1 = self.window.H_yuan_param1_spinBox.value()
param2 = self.window.H_yuan_param2_spinBox.value()
minRad = self.window.H_yuan_min_spinBox.value()
maxRad = self.window.H_yuan_max_spinBox.value()
circles = cv2.HoughCircles(img, method, dp, circle,
param1=param1, param2=param2, minRadius=minRad, maxRadius=maxRad)
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
cv2.circle(cimg, (i[0], i[1]), i[2], (0,255,0), 2)
cv2.circle(cimg, (i[0], i[1]),