深度學習目標檢測-鋼材缺陷檢測系統(tǒng)上位機ui和web界面
之前寫過這個博客: 工業(yè)缺陷檢測項目實戰(zhàn)(二)——基于深度學習框架yolov5的鋼鐵表面缺陷檢測
里面介紹了使用yolov5進行訓(xùn)練的步驟。今天我們一起學習利用qt將缺陷檢測封裝為一個系統(tǒng)。
上位機ui界面效果
首先看看效果:
我們運行,先可以看到登錄界面:
如果密碼和賬號輸入錯誤,會提示警告,輸入正確之后,我們會進入缺陷檢測界面,我們必須先打開圖片,才能進行識別和保持識別結(jié)果:
我們打開一張等待檢測的圖像,接著點擊開始
接著可以看到顯示了檢測結(jié)果,正確
點擊保存檢測圖像
實現(xiàn)步驟:
(1) 需要安裝:
sip
PyQt5
PyQt5-tools
(2) 添加設(shè)計器:
file——>settings——>Tools——>ExternalTools
先添加第一個:
4個步驟分別填:
1.名稱,隨便
2.填designer.exe路徑,我的路徑是:
D:\anaconda3\envs\keras\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
3.$FileName$
4.項目文件夾的路徑
再添加第二個:
從上往下分別為:
1.名稱,隨便
2.填python解釋器路徑,我的路徑是:
D:\anaconda3\envs\keras\python.exe
3. -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
4.$FileDir$
添加完后,我們才可以運行Qt界面,以及界面編輯設(shè)計器:
選擇ui文件,右鍵選擇QtDesigner,出現(xiàn)設(shè)計器
選擇PyUIC是編譯ui文件,每次修改都必須先單獨編譯ui文件,除非是直接在py文件修改組件代碼。
(3) 編寫事件內(nèi)容:
設(shè)計完組件后,我們需要添加點擊事件函數(shù):
self.pushButton.clicked.connect(self.openfile)
self.pushButton_2.clicked.connect(self.defect)
self.pushButton_3.clicked.connect(self.save_img)
接著,編寫函數(shù)內(nèi)容,比如,打開文件:
def openfile(self):
# 定義文件讀取函數(shù),解決中文路徑讀取錯誤的問題
def cv_imread(file_path):
cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)
return cv_img
self.fname, ok = QFileDialog.getOpenFileName(None, "打開圖片", "", "*;;*.png;;All Files(*)")
if not ok:
return
self.lineEdit.setText(self.fname)
# 顯示圖片
img = cv_imread(self.fname) # opencv讀取圖片
# res = cv2.resize(img, (411, 361), interpolation=cv2.INTER_CUBIC) # 用cv2.resize設(shè)置圖片大小
self.img_o = img
_image = QtGui.QImage(self.img_o[:], self.img_o.shape[1], self.img_o.shape[0], self.img_o.shape[1] * 3,
QtGui.QImage.Format_RGB888) # pyqt5轉(zhuǎn)換成自己能放的圖片格式
jpg_out = QtGui.QPixmap(_image) # 轉(zhuǎn)換成QPixmap
self.label_4.setPixmap(jpg_out) # 設(shè)置圖片顯示
這里利用opecv進行圖像的打開。其他類似。
保存文件:
def save_img(self):
if self.defect_res == False:
QMessageBox.warning(self, '警告', '圖片為空', QMessageBox.Yes)
return
img = self.label_5.pixmap().toImage()
fpath, ftype = QFileDialog.getSaveFileName(None, "保存圖片", "d:/", " *.jpg;; *.png;;All Files(*)")
img.save(fpath)
(4) 檢測算法:
檢測時我們只需要訓(xùn)練好的best.pt文件,接著使用defect.py這個檢測腳本,當然,直接使用行不通,我們得對原函數(shù)進行改造,變成一個可以輸入圖片,權(quán)重pt文件,和保存檢測結(jié)果的路徑圖片:
def defect_main(weights, soucre, save_path):
check_requirements(exclude=('tensorboard', 'thop'))
run(weights, soucre, save_path)
這樣方便直接調(diào)用函數(shù)。
(5) 打包為exe:
pip install pyinstaller
pyinstaller -F main.py
報錯集錦:
- 報錯:This application failed to start because no Qt platform plugin could be initialized.
解決方法:Qt開發(fā),報錯:This application failed to start because no Qt platform plugin could be initialized. - 報錯:pyinstaller打包提示PermissionError: [Errno 13] Permission denied…\ucrtbase.dll
解決方法:pyinstaller打包提示PermissionError: [Errno 13] Permission denied…\ucrtbase.dll.
或者,直接從C:\Windows\System32里面找到ucrtbase.dll,copy到項目文件夾就行。
當然,此上位機換成什么檢測都可以,只要有訓(xùn)練好的權(quán)重文件
web界面效果
文章來源:http://www.zghlxwxcb.cn/news/detail-428387.html
需要工程代碼,定制界面,或者優(yōu)化界面的可私信我即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-428387.html
到了這里,關(guān)于深度學習目標檢測-鋼材缺陷檢測系統(tǒng)上位機ui和web界面的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!