python opencv PyQt5
2024-09-08 16:11:09
import cv2
import numpy as np
import sys
from PyQt5.QtGui import *
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
import datetime class Video():
def __init__(self, capture):
self.capture = capture
capture.set(3,960) # set Width
capture.set(4,2560) # set Height
self.currentFrame = np.array([]) def captureFrame(self):
ret, readFrame = self.capture.read()
return readFrame def captureNextFrame(self):
ret, readFrame = self.capture.read()
if (ret == True): readFrame=cv2.resize(readFrame, (int(960 / 4), int(2560 / 4))) #cv2.waitKey(1)
self.currentFrame = cv2.cvtColor(readFrame, cv2.COLOR_BGR2RGB) def convertFrame(self):
try:
height, width = self.currentFrame.shape[:2]
#print(height, width)
img = QImage(self.currentFrame, width, height, QImage.Format_RGB888)
img = QPixmap.fromImage(img)
#self.previousFrame = self.currentFrame
return img
except:
return None class win(QMainWindow):
def __init__(self, parent=None):
super(win,self).__init__()
self.setGeometry(250, 80, 960, 2560)
self.setWindowTitle('camera')
self.video = Video(cv2.VideoCapture(1))
print(self.video)
self._timer = QTimer(self)
self._timer.timeout.connect(self.play)
self._timer.start(2)
self.update()
self.videoFrame = QLabel('VideoCapture')
self.videoFrame.setAlignment(Qt.AlignCenter)
self.setCentralWidget(self.videoFrame)
self.ret, self.capturedFrame = self.video.capture.read() def play(self):
try:
nowTime=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
print(nowTime)
self.video.captureNextFrame()
self.videoFrame.setPixmap(self.video.convertFrame())
self.videoFrame.setScaledContents(True)
except TypeError:
print('No Frame') if __name__ == '__main__':
app = QApplication(sys.argv)
win = win()
win.show()
sys.exit(app.exec_())
最新文章
- 【原创】记一次Project插件开发
- JAVA里面的IO流(二)方法1、输入流
- SharePoint 2013 报:网站在改进过程中处于只读状态,对此给您带来的不便,我们深表歉意
- Tomcat 6 JNDI数据源详解
- 如何设计一个优秀的API(转)
- 探究chrome下的开发工具的各功能
- 常用SQL查询语句
- Android v4、v7、v13 的区别
- Datagrid数据导出到excel文件的三种方法
- weblogic与axis2 jar包冲突
- 转....导入excel错误:外部表不是预期的格式 解决方案
- JSP---JavaBean的使用-jsp:useBean标签相关
- QLineEdit
- Scala--样例类(case)详解
- codeforces 416B. Appleman and Tree 树形dp
- java 中缀转后缀(逆波兰)
- 1.4. 为现有的应用程序添加 Core Data 支持(Core Data 应用程序实践指南)
- FirstIDL
- tomcat 日志切割 catalina.out
- 学习TensorFlow,调用预训练好的网络(Alex, VGG, ResNet etc)