暑假开始了解python了,记录一下最近实现的小相机,只有功能,没有qss😀,还参考了很多博主😂
貌似还有一个小问题,就是转成灰度图后转不回去了,我比较懒就不研究了🎈
import time
import cv2
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5 import QtGui
from PyQt5.QtWidgets import *
from qtpy import uic
class Win(QWidget):
msg = pyqtSignal(bool)
def __init__(self):
super(Win, self).__init__()
self.flag = True
self.photoname = 1
self.ui = uic.loadUi("ui/untitled.ui") # 导入ui文件
self.ui.setParent(self) # 将ui文件设置父窗口,将它显示出来
self.timeThread = Time() # 创建一个自己写的Time类
self.timeThread.start()
self.resize(820, 600) # 改变窗口大小
self.timeThread.update.connect(self.update_time) # 给信号设置槽函数
self.cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # 打开内置摄像头,windows特有的,加上CAP_DSHOW,不加关闭程序摄像头不会关闭
self.cap.set(3, 640) # 设置相机窗口
self.cap.set(4, 480)
self.video = Video(self.cap)
self._timer = QTimer(self) # 创建定时器对象
self._timer.timeout.connect(self.play) # 连接timeout信号到槽函数
self._timer.start(30) # 多少时间间隔内执行一次
self.ui.jietu.clicked.connect(self.cliek_jietu) # 绑定槽函数
self.ui.luxiang.clicked.connect(self.click_luxiang)
fourcc = cv2.VideoWriter_fourcc(*'mp4v') # 设置录像格式
self.vm = cv2.VideoWriter('E:\opencvLZvideo\out007.avi', fourcc, 30, (640, 480))
self.ui.fbl.currentIndexChanged.connect(self.click_fbl)
self.ui.td.currentIndexChanged.connect(self.click_td)
self.msg.connect(self.video.change)
def click_td(self):
self.ys = self.ui.fbl.currentText() # 如果组合框改变内容
if self.ys == '原':
self.msg.emit(True)
else:
se