基于Python3.7的人脸签到系统-2

创建摄像头操作类

效果图

  • 打开摄像头

    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)
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值