亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python+QTimer計時器實現攝像頭視頻的播放和暫停

 更新時間:2024年11月18日 09:31:58   作者:天颶  
這篇文章主要為大家詳細介紹了Python如何通過QTimer計時器實現攝像頭視頻的播放和暫停功能,感興趣的小伙伴可以跟隨小編一起學習一下

在上一篇文章《Python學習之簡易視頻播放器》中,通過python-opencv-pyqt5,實現了有界面的視頻播放。但是,上文代碼只有播放,卻無法讓播放的視頻暫停。這是因為,我們在播放中使用的是while(self.cap.isOpened())循環(huán)。若要讓視頻在播放過程可以暫停,就要借助QTimer()函數來實現了。不多說了,直接上代碼:

import cv2
import sys
from PyQt5 import  QtWidgets
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtGui import QPixmap,  QImage
from PyQt5.QtWidgets import QWidget,  QHBoxLayout, QPushButton, QVBoxLayout, QLabel
 
 
class UI_FROM(QWidget):
    def __init__(self):
        super(UI_FROM, self).__init__()
        self.resize(800, 600)
        self.timer_camera = QTimer()
        self.vl = QVBoxLayout(self)
        self.hl = QHBoxLayout(self)
        btn1 = QPushButton('播放')
        btn1.clicked.connect(self.ShowCamera)
        self.hl.addWidget(btn1)
        btn2 = QPushButton('暫停')
        btn2.clicked.connect(self.timer_camera.stop)
        self.hl.addWidget(btn2)
        self.vl.addLayout(self.hl)
        self.label = QLabel(self)
        self.label.setGeometry(20, 20, 640, 480)
        self.label.setStyleSheet("QLabel{background: black;}")
        self.label.setAlignment(Qt.AlignTop)
        self.label.setAlignment(Qt.AlignLeft)
        self.label.setFrameShape(QtWidgets.QFrame.Box)
        self.label.setScaledContents(True)
        self.vl.addWidget(self.label)
        self.cap = cv2.VideoCapture(0)
        print('攝像頭是否開啟: {}'.format(self.cap.isOpened()))
 
    def Stop(self):
        self.timer_camera.stop()
 
    def ShowCamera(self):
        self.timer_camera.start(100)
        self.timer_camera.timeout.connect(self.ShowData)
 
    def ShowData(self):
        self.ret, color_frame = self.cap.read()
        if self.ret :
            color_frame = cv2.flip(color_frame, 1)
            cv2.waitKey(1)
            im = cv2.cvtColor(color_frame, cv2.COLOR_RGB2BGR)
            img = QImage(im.data, im.shape[1], im.shape[0], QImage.Format_RGB888)
            self.label.setPixmap(QPixmap.fromImage(img))
        else:
            self.cap.release()
            self.timer_camera.stop()
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    ui =UI_FROM()
    ui.show()
    sys.exit(app.exec_())

如上代碼,界面就放置了3個控件,分別是播放和暫停按鈕,以及用于加載視頻的QLabel,然后通過QVBoxLayout和QHBoxLayout進行了簡單布局。程序執(zhí)行后,會先去打開本地攝像頭,然后點擊播放按鈕后,才會讀取視頻流數據。點擊暫停按鈕,則會通過暫停計時器,從而實現視頻播放的暫停。具體效果圖如下:

好了,現在可以把上面的代碼和《Python學習之簡易視頻播放器》的代碼結合一下,讓播放器的功能進一步完善吧!

到此這篇關于Python+QTimer計時器實現攝像頭視頻的播放和暫停的文章就介紹到這了,更多相關Python視頻播放和暫停內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 用Python的繪圖庫(matplotlib)繪制小波能量譜

    用Python的繪圖庫(matplotlib)繪制小波能量譜

    這篇文章主要介紹了用Python的繪圖庫(matplotlib)繪制小波能量譜,代碼簡單詳細,思路清晰,需要的朋友可以參考下
    2021-04-04
  • Pandas讀存JSON數據操作示例詳解

    Pandas讀存JSON數據操作示例詳解

    這篇文章主要為大家介紹了Pandas讀存JSON數據操作示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • PyQt5實現QLineEdit正則表達式輸入驗證器

    PyQt5實現QLineEdit正則表達式輸入驗證器

    這篇文章主要介紹了PyQt5實現QLineEdit正則表達式輸入驗證器,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • python機器學習之神經網絡(三)

    python機器學習之神經網絡(三)

    這篇文章主要為大家詳細介紹了python機器學習之神經網絡第三篇,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • pytest中fixture函數使用

    pytest中fixture函數使用

    本文主要介紹了pytest中fixture函數使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • python矩陣基本運算的實現

    python矩陣基本運算的實現

    本文主要介紹了python?矩陣的基本運算,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • python網絡爬蟲之協程的實現方法

    python網絡爬蟲之協程的實現方法

    這篇文章主要介紹了python網絡爬蟲之協程的實現方法,協程Coroutine又稱微線程,是一種用戶態(tài)內的上下文切換技術,簡而言之,就是通過一個線程實現代碼塊相互切換執(zhí)行,需要的朋友可以參考下
    2023-08-08
  • Python使用multiprocessing實現一個最簡單的分布式作業(yè)調度系統

    Python使用multiprocessing實現一個最簡單的分布式作業(yè)調度系統

    mutilprocess像線程一樣管理進程,這個是mutilprocess的核心,他與threading很是相像,對多核CPU的利用率會比threading好的多,通過本文給大家介紹Python使用multiprocessing實現一個最簡單的分布式作業(yè)調度系統,需要的朋友參考下
    2016-03-03
  • pandas按若干個列的組合條件篩選數據的方法

    pandas按若干個列的組合條件篩選數據的方法

    下面小編就為大家分享一篇pandas按若干個列的組合條件篩選數據的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 在SAE上部署Python的Django框架的一些問題匯總

    在SAE上部署Python的Django框架的一些問題匯總

    這篇文章主要介紹了在SAE上部署Python的Django框架的一些問題匯總,SAE是新浪的一個在線APP部署平臺,并且對Python應用提供相關支持,需要的朋友可以參考下
    2015-05-05

最新評論