日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > 目标检测 >内容正文

目标检测

【搞事情】利用PyQt为目标检测SSD300添加界面(二)

發(fā)布時(shí)間:2024/1/18 目标检测 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【搞事情】利用PyQt为目标检测SSD300添加界面(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【原創(chuàng)文章】歡迎正常授權(quán)轉(zhuǎn)載(聯(lián)系作者)
【反對(duì)惡意復(fù)制粘貼,如有發(fā)現(xiàn)必維權(quán)】
【微信公眾號(hào)原文傳送門】


上篇詳細(xì)介紹實(shí)現(xiàn)利用PyQt給SSD加界面的三種方案(沒學(xué)的趕快點(diǎn)進(jìn)來學(xué)呀,哈哈)。這篇將詳細(xì)介紹方案1的實(shí)現(xiàn)代碼(代碼獲取見文章末尾)。

下載好的代碼中項(xiàng)目文件構(gòu)成如下:

其中 “ssd” 文件夾中是SSD檢測(cè)的關(guān)鍵文件,關(guān)于這部分之前寫文章了,里面詳細(xì)介紹了如何訓(xùn)練一個(gè)屬于自己的SSD300,有代碼、有預(yù)訓(xùn)練的權(quán)值文件,不清楚的請(qǐng)移步這里

接下來詳細(xì)介紹實(shí)現(xiàn),先看看流程圖,實(shí)現(xiàn)的關(guān)鍵在于 檢測(cè)循環(huán) 和 顯示。

01 繪制界面

這里推薦一個(gè)非常方便的PyQt開發(fā)IDE—— eric,整體開發(fā)過程有點(diǎn)像MFC的感覺,可以直觀看見控件的動(dòng)作信號(hào),并直接創(chuàng)建對(duì)應(yīng)的槽函數(shù),開發(fā)非常有效率,可以節(jié)省大把時(shí)間。
創(chuàng)建一個(gè)對(duì)話框窗口或者主窗口,拖拽一個(gè)QLabel在主窗口中用于顯示,兩個(gè)QPushButton用于控制開始/停止,一個(gè)QTextEdit用于顯示檢測(cè)結(jié)果。當(dāng)然添加什么控件還是按照自己的需求來。為了講解下面的代碼,這里我把用到的控件和名稱列在下面。界面的布置如下圖。

界面控件
控件類型ObjectName作用
QLabellabel_imgshow畫面顯示
QPushButtonpushButton_start開始
QPushButtonpushButton_end結(jié)束
QTextEdittextEdit顯示檢測(cè)結(jié)果


繪制好ui文件(對(duì)應(yīng)文件:MainWindow.ui)后將其轉(zhuǎn)為.py文件(Ui_MainWindow.py)。eric 可以十分方便的完成轉(zhuǎn)化,唯一麻煩的是,每次ui文件改變了都需要重新再“轉(zhuǎn)化更新”一次。

02 界面顯示

界面顯示主要是要將opencv的圖像數(shù)據(jù)(numpy.array)顯示在界面的QLabel(label_imgshow)中,項(xiàng)目中構(gòu)建了一個(gè)類成員函數(shù)實(shí)現(xiàn)。

def show_img(self, img):showImg = QImage(img.data, img.shape[1], img.shape[0],img.shape[1] * 3, # 每行數(shù)據(jù)個(gè)數(shù),3通道 所以width*3QImage.Format_RGB888)self.label_imgshow.setPixmap(QPixmap.fromImage(showImg)) # 展示圖片

代碼非常簡(jiǎn)單,就是先將numpy.array的數(shù)據(jù)轉(zhuǎn)為QImage,再通過Qlabel控件的setPixmap將圖像顯示出來。每次更新顯示時(shí)將opencv的圖像數(shù)據(jù)作為參數(shù),調(diào)用一次函數(shù)就行。

03 幀循環(huán)實(shí)現(xiàn)

接下來就是最復(fù)雜(其實(shí)超簡(jiǎn)單)的幀循環(huán)了。在窗口實(shí)例化時(shí),將SSD300模型建立并導(dǎo)入訓(xùn)練好的權(quán)值,點(diǎn)擊‘開始’后時(shí)開始幀循環(huán)檢測(cè)(循環(huán)在點(diǎn)擊‘開始’的槽函數(shù)中),點(diǎn)擊‘結(jié)束’后結(jié)束幀循環(huán)(通過控制循環(huán)條件實(shí)現(xiàn))。

下面詳細(xì)介紹構(gòu)造函數(shù)及“開始/結(jié)束按鈕點(diǎn)擊的槽函數(shù)

構(gòu)造函數(shù)

功能:主要完成SSD的初始化以及一些依賴變量的初始化。

這里建議那些利用該方案來給自己搭建的網(wǎng)絡(luò)添加界面的同學(xué),建議將網(wǎng)絡(luò)單獨(dú)封裝成類,界面類中使用時(shí)會(huì)非常便利。

def __init__(self, parent=None):super(MainWindow, self).__init__(parent) # 父類初始化self.setupUi(self) # 窗口‘穿衣服’,變成我們?cè)O(shè)計(jì)的樣子# 初始化界面# 設(shè)置圖片自適應(yīng)顯示self.label_imgshow.setScaledContents(True)# 創(chuàng)建一幅白色圖片,在停止的時(shí)候顯示self.img_none = np.ones((420, 720, 3), dtype=np.uint8)*255self.show_img(self.img_none)# 初始化SSD# 目標(biāo)名稱,按順序self.obj_names = ['Aeroplane', 'Bicycle', 'Bird', 'Boat', 'Bottle','Bus', 'Car', 'Cat', 'Chair', 'Cow', 'Diningtable','Dog', 'Horse', 'Motorbike', 'Person', 'Pottedplant','Sheep', 'Sofa', 'Train', 'Tvmonitor']# 需要顯示的目標(biāo)list, 用于過濾self.include_class = self.obj_names# 導(dǎo)入權(quán)值文件,關(guān)聯(lián)檢測(cè)目標(biāo)類別名self.ssd = SSD_test(weight_path='./ssd/weights/weights_SSD300.hdf5', class_nam_list=self.obj_names)# 攝像頭索引號(hào)或者視頻文件路徑self.camera_index = 0 # 電腦連接的攝像頭默認(rèn)為0# opencv 支持 ip攝像頭# self.camera_index = './Voc_test.avi'# 主循環(huán)flg,控制循環(huán), False時(shí)循環(huán)停止self.video_flg = True

‘開始’點(diǎn)擊槽函數(shù)

功能:獲取圖像數(shù)據(jù)流,之后開始幀循環(huán)檢測(cè)

幀循環(huán)基本流程:讀入圖片–>預(yù)處理–>SSD檢測(cè)–>處理檢測(cè)結(jié)果–>結(jié)果繪制在圖像上–>更新顯示

@pyqtSlot() def on_pushButton_start_clicked(self):# 獲取圖像數(shù)據(jù)流self.cap = cv2.VideoCapture(self.camera_index)# 判斷數(shù)據(jù)流是否打開if self.cap.isOpened():# ‘開始’按鈕設(shè)置為不可用# 以免二次誤點(diǎn)造成錯(cuò)誤self.pushButton_start.setEnabled(False)# 開始幀循環(huán)self.video_flg = Truewhile self.video_flg:# 按幀讀取圖像ret, self.img_scr = self.cap.read()# opencv中圖像為BGR,這里轉(zhuǎn)為RGB# 因?yàn)槲业腟SD訓(xùn)練時(shí)用的是RGB圖像,順序錯(cuò)誤會(huì)影響檢測(cè)準(zhǔn)確性self.img_scr = cv2.cvtColor(self.img_scr, cv2.COLOR_BGR2RGB)# SSD檢測(cè)self.preds = self.ssd.Predict(self.img_scr)# 對(duì)檢測(cè)結(jié)果過濾self.preds = self.filter(self.preds, inclued_class=self.include_class)# 將檢測(cè)結(jié)果繪制到圖像self.img_scr = self.draw_img(self.img_scr, self.preds)# 將檢測(cè)結(jié)果顯示在QTextEdit控件上h, w = self.img_scr.shape[:2]self.text = self.decode_preds(self.preds, w=w, h=h)self.textEdit.setText(self.text)# 更新顯示圖像self.show_img(self.img_scr)# 強(qiáng)制更新UI# 如果沒有,界面就‘假死’了,因?yàn)橐恢碧幱谘h(huán)里QApplication.processEvents()else:self.textEdit.setText('攝像頭未打開!!!\n請(qǐng)檢查')

‘結(jié)束’點(diǎn)擊槽函數(shù)

功能:改變幀循環(huán)條件停止循環(huán);為下一次開始做準(zhǔn)備

@pyqtSlot()def on_pushButton_end_clicked(self):# 改變循環(huán)條件,停止循環(huán)self.video_flg = False# 顯示空白圖片self.show_img(self.img_none)# 清除TextEdit中的顯示self.textEdit.clear()# 釋放攝像頭/數(shù)據(jù)流# 先判斷是不是當(dāng)前實(shí)例是不是有‘cap’成員# 防止攝像頭已經(jīng)釋放完了,再次點(diǎn)擊時(shí)報(bào)錯(cuò)if hasattr(self, 'cap'):# 釋放攝像頭self.cap.release()# 刪除成員變量del self.cap# 將‘開始’設(shè)置為可以點(diǎn)擊,為再開始做準(zhǔn)備self.pushButton_start.setEnabled(True)
關(guān)注下方公眾號(hào),回復(fù)關(guān)鍵字即可獲取下載地址。
  • 方案1源代碼下載:

    回復(fù)“SSD界面1”獲取。


如果你讀后有收獲,歡迎關(guān)注我的微信公眾號(hào)
上面有更多完全免費(fèi)教程,我也會(huì)不定期更新
? ? ? 打開微信掃描下方二維碼關(guān)注 ? ? ?

總結(jié)

以上是生活随笔為你收集整理的【搞事情】利用PyQt为目标检测SSD300添加界面(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩欧美高清视频 | 日本精品免费视频 | 亚洲成人av电影在线 | av免费在线播放 | 91久久精品日日躁夜夜躁国产 | 人人干网站 | 久久精品一区二区三区不卡牛牛 | 久久久香蕉视频 | 国产日韩欧美视频在线观看 | 欧美精品一级二级三级 | 粗大挺进潘金莲身体在线播放 | 欧美10p| 免费一级a毛片夜夜看 | 免费在线看黄视频 | 精品久久久久久久久久久久久久久久久久 | 精品一区二区三区无码视频 | 中国字幕一色哟哟 | 网站在线观看你懂的 | 极品人妻videosss人妻 | 粉嫩av一区二区三区 | 亚欧洲精品在线视频免费观看 | 97精品一区二区三区 | 欧美交换配乱吟粗大25p | 国产精品国产三级国产播12软件 | 久久中文网 | 婷婷开心激情 | 欧美性视频在线 | 亚洲视频一区二区在线观看 | 欧美成人国产va精品日本一级 | 亚洲字幕成人中文在线观看 | 中文字幕在线播放一区二区 | 美女色综合| 人成在线视频 | 97涩涩网| 伊人艹| 一区二区自拍 | 国产1区2区3区中文字幕 | 综合久久久 | 日韩aⅴ视频 | 成人3d动漫一区二区三区91 | 最好看的日本字幕mv视频大全 | av中文网 | 特黄特色特刺激免费播放 | 欧美性猛交乱大交xxxx | 国产欧美日韩精品在线 | 国产一卡二卡三卡四卡 | 又粗又猛又爽又黄的视频 | 中文字幕1区| 手机av在线网 | 色综合国产 | 91大神在线免费观看 | 国产成人精品免高潮在线观看 | 国产资源第一页 | 伊人福利在线 | 91嫩草在线 | 久久亚洲av午夜福利精品一区 | av影片在线观看 | 国产男女猛烈无遮挡a片漫画 | 人人草在线视频 | 黄色av电影网址 | 嫩草精品 | 国产网站在线 | 大尺度摸揉捏胸床戏视频 | 豆花视频成人 | 成人av观看| 国产粉嫩白浆 | 91大神视频在线播放 | cekc老妇女cea0| 青青国产视频 | 欧美特级a | 久久久久夜| 国产在线精品一区 | 国产精品久久久av | 国产精品第八页 | 成人午夜福利一区二区 | 免费av免费观看 | 简单av网 | 美女隐私免费观看 | 美女视频一区 | 狠狠操婷婷| 久草国产精品视频 | 亚洲精品天堂网 | 欧美顶级少妇做爰 | 欧美一区二区三区四区视频 | 色偷偷人人澡人人爽人人模 | 阿v视频免费在线观看 | 日韩av伦理 | 成人国产精品入口免费视频 | 婷婷国产 | 999久久久国产精品 韩国精品一区二区 | aaa成人 | 日韩在线观看视频一区二区 | 爱福利视频广场 | 亚洲精品少妇久久久久久 | 欧美亚洲91 | 一区二区三区四区在线视频 | 亚洲男人天堂电影 | 日本黄色免费在线观看 | 久久久久久久久久艹 |