首页
/
每日頭條
/
科技
/
python的qt界面
python的qt界面
更新时间:2024-07-18 09:20:18

在做計算機視覺項目時,經常需要打開和顯示監控視頻畫面,對畫面進行分析處理。使用OpenCV打開攝像頭顯示視頻畫面,視頻可以參看:1.3 OpenCV打開本地攝像頭并顯示視頻畫面。

本文主要實現在PyQt窗體上顯示監控視頻畫面。視頻可以參看:8.2 Python-PyQt:窗體上顯示視頻圖像

一、使用Qt Designer創建窗體

窗體主要兩個元素:一個 Label 用來顯示圖像,一個Push Button 用來打開視頻頭。

窗體自适應布局,保存窗體文件:yolodet.ui,XML格式保存的。

要在Python中使用這個窗體文件,還需要把yolodet.ui文件編譯生成.py文件。在vscode中配置好PyQt後,打開ui文件的右鍵菜單,很方便把ui文件轉換成py文件。

python的qt界面(118.PythonPyQt窗體上顯示監控畫面)1

右鍵菜單

二、實現代碼

import sys import cv2 from PyQt5 import QtCore,QtGui,QtWidgets from Ui_yolodet import Ui_MainWindow class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.btnopen.clicked.connect(self.Open) def Open(self): cap=cv2.VideoCapture(0) while cap.isOpened(): ret,frame=cap.read() #img=QtGui.QImage(frame.data,frame.shape[1],frame.shape[0],QtGui.QImage.Format_BGR888) #重載修複圖像顯示變形問題 img = QtGui.QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[1] * 3,QtGui.QImage.Format_BGR888) #設置label高度和寬度 self.lblimg.setFixedSize(frame.shape[1],frame.shape[0]) self.lblimg.setPixmap(QtGui.QPixmap.fromImage(img)) self.lblimg.setScaledContents(True) #自适應大小 QtWidgets.QApplication.processEvents() if __name__ == '__main__': app=QtWidgets.QApplication(sys.argv) mywin=MainWindow() mywin.setObjectName("Yolo3 Detect") mywin.show() sys.exit(app.exec_())

說明:

1、正常情況,使用下面代碼來生成QImage,可以顯示正常圖像,但有時會發現圖像會扭曲變形。

img=QtGui.QImage(frame.data,frame.shape[1],frame.shape[0],QtGui.QImage.Format_BGR888)

解決辦法:改成如下代碼。原因:QImage每行是按照sizeof(int)對齊的,如果不明确指定最後一個參數,即行字節數,則圖像會歪斜。增加第三個參數:frame.shape[1] * 3,

img = QtGui.QImage(frame.data, frame.shape[1], frame.shape[0], frame.shape[1] * 3,QtGui.QImage.Format_BGR888)

2、根據圖像的大小來設定Label的大小,以防止視頻畫面變形

#設置label高度和寬度 self.lblimg.setFixedSize(frame.shape[1],frame.shape[0])

三、運行效果

python的qt界面(118.PythonPyQt窗體上顯示監控畫面)2

運行效果:畫面顯示

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
研磨機的使用方法 研磨機的清潔保養
研磨機的使用方法 研磨機的清潔保養
研磨機的使用方法研磨機的清潔保養研磨機的使用方法研磨機在火力發電廠制粉系統中被廣泛的應用,但其傳動軸振動及小牙輪斷齒一直困擾着系統的安全生産,前一時期我廠制粉系統也倍受這兩個缺陷的困擾,甚至影響到了機組燃料的供應,經檢修人員多次調整,效果顯著,傳動軸振動低于0.08mm。操作者必須熟悉設備一般結構及...
2024-07-18
去除冰箱噪音的小竅門
去除冰箱噪音的小竅門
電冰箱在正常工作時也會伴有一定噪聲,尤其是在夜深人靜時,噪聲會影響人們的睡眠。此時可采用以下辦法加以消除:臨睡前30分鐘打開箱門将溫度控制器旋鈕轉到接近強冷點的附近位置,如2℃左右,然後關好冰箱門,入睡前,再将電冰箱門打開,将溫度控制旋鈕由原來的強冷點重新轉到弱冷點的位置,如8℃左右,然後關好箱門,...
2024-07-18
傳真機的使用方法
傳真機的使用方法
傳真機是應用掃描和光電變換技術,把文件、圖表、照片等靜止圖像轉換成電信号,傳送到接收端,以記錄形式進行複制的通信設備。【1】發傳真①、取下聽筒,把要傳真的資料文字面向下,放在指定的位置。②、聽到“嘟”聲後,拔電話号碼。③、請對方給信号(如對方設為自動接收此步驟可省),聽到信号...
2024-07-18
夏季家電使用四大注意事項
夏季家電使用四大注意事項
夏季天氣炎熱,家電使用集中、頻繁,如使用不當,會造成家用電器損壞。因此家電使用有四忌:一忌将家電放置于陽光直射的地方。夏季氣溫高,家電應放在通風處,尤其是電冰箱、彩電等耐用電器,使其周圍形成良好的空氣對流環境,有利于家電及時散熱。二忌頻繁地啟動家電。若頻繁地啟動家電,使家電長時間在大電流狀态下工作,...
2024-07-18
淨水器有用嗎?淨水器怎麼用?
淨水器有用嗎?淨水器怎麼用?
反滲透純水機的淨水效果最理想。它有三級前置過濾,一級反滲透膜精密過濾和一級後置過濾。淨水器有用嗎?淨水器怎麼用?淨水器有用嗎家用濾水器又稱為家用淨水機,是一種小型的水處理設備,一般都是采用多級濾芯技術,主要是以PP棉濾芯、顆粒炭濾芯、活性炭濾芯、反滲透RO膜、後置活性炭濾芯。家用濾水器可以有效的過濾...
2024-07-18
Copyright 2023-2024 - www.tftnews.com All Rights Reserved