今天小編就爲大家分享一篇pyqt5 使用cv2 顯示圖片,攝像頭的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
如下所示:
#! /usr/bin/python3 # coding = utf-8 # from PyQt5 import QtGui,QtCore,Qt import sys from PyQt5.QtCore import Qt,pyqtSignal,QSize,QRect,QMetaObject, QCoreApplication, pyqtSlot,QPropertyAnimation,QThread from PyQt5.QtGui import QIcon, QFont, QPixmap, QPainter, QImage from PyQt5.QtWidgets import QMainWindow, QApplication import cv2 from gevent.libev.corecext import SIGNAL, time from qtpy importQtCore class mycsms(QMainWindow): def __init__(self): super(mycsms, self).__init__() self.setupUi(self) self.image= QImage() self.device= cv2.VideoCapture(0) self.playTimer= Timer("updatePlay()") self.connect(self.playTimer, SIGNAL("updatePlay()"), self.showCamer) # 讀攝像頭 def showCamer(self): if self.device.isOpened(): ret, frame= self.device.read() else: ret = False # 讀寫磁盤方式 # cv2.imwrite("2.png",frame) #self.image.load("2.png") height, width, bytesPerComponent= frame.shape bytesPerLine = bytesPerComponent* width # 變換彩色空間順序 cv2.cvtColor(frame, cv2.COLOR_BGR2RGB,frame) # 轉爲QImage對象 self.image= QImage(frame.data, width, height, bytesPerLine, QImage.Format_RGB888) self.view.setPixmap(QPixmap.fromImage(self.image)) if __name__ == "__main__": app = QApplication(sys.argv) myshow = mycsms() myshow.playTimer.start() myshow.show() sys.exit(app.exec_()) # 線程類: class Timer(QtCore.QThread): def __init__(self, signal="updateTime()", parent=None): super(Timer, self).__init__(parent) self.stoped= False self.signal= signal self.mutex= QtCore.QMutex() def run(self): with QtCore.QMutexLocker(self.mutex): self.stoped= False while True: if self.stoped: return self.emit(QtCore.SIGNAL(self.signal)) #40毫秒發送一次信號 time.sleep(0.04) def stop(self): with QtCore.QMutexLocker(self.mutex): self.stoped= True def isStoped(self): with QtCore.QMutexLocker(self.mutex): return self.stoped
以上這篇pyqt5 使用cv2 顯示圖片,攝像頭的實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持神馬文庫。