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

网友投稿 951 2022-05-29

#! /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

# 变换彩色空间顺序

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

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

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:顺序表合并
下一篇:从部署和运维说说DLI(2)
相关文章