首页 > 编程 > Python > 正文

pyqt5 使用cv2 显示图片,摄像头的实例

2019-11-25 12:36:26
字体:
来源:转载
供稿:网友

如下所示:

#! /usr/bin/python3# coding = utf-8# from PyQt5 import QtGui,QtCore,Qtimport sysfrom PyQt5.QtCore import Qt,pyqtSignal,QSize,QRect,QMetaObject, QCoreApplication, pyqtSlot,QPropertyAnimation,QThreadfrom PyQt5.QtGui import QIcon, QFont, QPixmap, QPainter, QImagefrom PyQt5.QtWidgets import QMainWindow, QApplicationimport cv2from gevent.libev.corecext import SIGNAL, timefrom qtpy importQtCoreclass 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 显示图片,摄像头的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表