创建摄像头操作类
效果图
-
打开摄像头
self.capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
-
判断是否打开成功
capture.isOpened()
-
-
获取摄像头数据
# ret:是否读取成功;pic_data:数据 ret, data = self.capture.read()
-
转换数据并提供给界面
def camera_to_pic(self): # 获取摄像头数据 pic = self.read_camera() # BGR转换为RGB self.currentframe = cv2.cvtColor(pic, cv2.COLOR_BGR2RGB) # 设置宽高 # self.currentframe = cv2.cvtColor(self.currentframe, (640, 480)) # 获取画面的高度与宽度 height, width = self.currentframe.shape[:2] # 转换格式(界面能够显示的格式) # QImage格式(适用于计算机存储) qimg = QImage(self.currentframe, width, height, QImage.Format_RGB888) # QPixmap格式(适用于计算机显示) qpixmap = QPixmap.fromImage(qimg) return qpixmap
-
界面类显示画面
-
循环显示
-
定时器进行定时
# 启动定时器进行定时获取摄像头数据进行显示 self.timeshow = QTimer(self) self.timeshow.start(10) # 时间10ms # 关联槽 self.timeshow.timeout.connect(self.show_cameradata)
-
实时显示画面
def show_cameradata(self): # 获取到摄像头数据并转换数据 pic=self.cameravideo.camera_to_pic() # 显示画面 self.label.setPixmap(pic)
-
-
显示当前时间
datetime = QDateTime.currentDateTime() self.dateTimeEdit.setDateTime(datetime)
-
实时显示当前时间
# 动态显示时间 def datetime(self): self.timeshow = QTimer(self) self.timeshow.start(50) # 关联槽 self.timeshow.timeout.connect(self.set_datetime) def set_datetime(self): datetime = QDateTime.currentDateTime() # 设置不可编辑和输出格式 self.dateTimeEdit.setEnabled(False) self.dateTimeEdit.setDisplayFormat("yyyy/MM/dd HH:mm:ss") self.dateTimeEdit.setDateTime(datetime)
-
-
-
关闭摄像头
- 关闭摄像头
def camera_Close(self): self.capture.release()
-
关闭定时器
self.timeshow.stop()
-
初始化显示界面
self.label.setPixmap(QPixmap("QQ.png")) self.label.setScaledContents(True)
-
初始化显示界面
self.label.setPixmap(QPixmap("QQ.png")) self.label.setScaledContents(True)