Где я могу добавить функцию захвата изображения с веб-канала? - PullRequest
0 голосов
/ 28 ноября 2018

Я создал графический интерфейс для вывода веб-камеры с помощью QLabel.Теперь я хочу сделать функцию сохранения кадра с веб-камеры.Я добавил функцию для кнопки, которая делает захват.Затем я поместил его в функцию update_frame , но когда я нажимал кнопку, она снова и снова возвращалась к ней, печатая мое подтверждающее сообщение снова и снова.Где я могу поставить функцию capture_image ? Может кто-нибудь помочь мне с этим.Это было бы очень полезно.

def start_cam(self):
    self.capture=cv2.VideoCapture(0)
    self.capture.set(cv2.CAP_PROP_FRAME_HEIGHT,180)
    self.capture.set(cv2.CAP_PROP_FRAME_WIDTH,316)

    self.timer = QTimer()
    self.timer.timeout.connect(self.update_frame)
    self.timer.start(5)

def update_frame(self):
    ret,self.image=self.capture.read()
    self.image=cv2.flip(self.image,1)   
    # Display Image Function
    self.displayImage(self.image,1)
    # Capture Image Function
    self.save_idButton.clicked.connect(self.capture_image)

def displayImage(self,img,window=1):
    qformat=QImage.Format_Indexed8
    if len(img.shape)==3: #[0]=rows, [1]=cols [2]=channels
        if img.shape[2]==4:
            qformat=QImage.Format_RGBA8888

        else:
            qformat=QImage.Format_RGB888

    outImage=QImage(img,img.shape[1],img.shape[0],img.strides[0],qformat)
    #BRG to RGB
    outImage=outImage.rgbSwapped()
    if window==1:
        self.frame_2.setPixmap(QPixmap.fromImage(outImage))
        self.frame_2.setScaledContents(True)

def capture_image(self):
    id_number = self.lineEdit.text()
    cv2.imwrite("Employee IDs/"+id_number+".png",self.image)
    ctypes.windll.user32.MessageBoxW(0, "    ID Saved Successfuly", "Success", 1)
...