Configure el temporizador de cuenta regresiva para capturar imágenes usando Python-OpenCV

Prerrequisitos: Introducción a OpenCV

La mayoría de nosotros ya hemos capturado imágenes usando el temporizador de cuenta regresiva con nuestros teléfonos. Podemos hacer lo mismo en nuestra computadora con la ayuda de OpenCV .

Pero aquí podemos especificar el temporizador de cuenta regresiva en lugar de elegir una de las cuentas regresivas especificadas y cada vez que se presione la tecla en particular (digamos q ), se iniciará el temporizador de cuenta regresiva y mostraremos la cuenta regresiva en nuestra cámara con la ayuda de cv2 .putText() y cuando llegue a cero capturaremos la imagen, mostraremos la imagen capturada durante un número fijo de segundos (según nuestra necesidad) y escribiremos/guardaremos la imagen en el disco. Ahora veamos cómo realizar esta tarea:

Acercarse:

  • Primero, configuraremos el valor inicial del temporizador de cuenta regresiva en segundos. (También podemos tomar esto como entrada del usuario).
  • Abra la cámara y cree un objeto de captura de video usando cv2.VideoCapture() .
  • Mientras la cámara está abierta
    • Leeremos cada cuadro y lo mostraremos usando cv2.imshow() .
    • Ahora configuraremos una tecla (usamos q ) para que comience la cuenta regresiva.
    • Tan pronto como esta tecla sea presionada, iniciaremos la Cuenta Regresiva.
    • Realizaremos un seguimiento de la cuenta regresiva con la ayuda de la función time.time() y mostraremos la cuenta regresiva en el video usando la función cv2.putText()  .
    • Cuando llegue a cero , copiaremos el cuadro actual y escribiremos el cuadro actual en la ubicación deseada en el disco usando la función cv2.imwrite() .
    • Al pulsar ‘Esc’ cerraremos la cámara.

A continuación se muestra la implementación.  

Python3

import cv2
import time
  
 
# SET THE COUNTDOWN TIMER
# for simplicity we set it to 3
# We can also take this as input
TIMER = int(20)
  
# Open the camera
cap = cv2.VideoCapture(0)
  
 
while True:
     
    # Read and display each frame
    ret, img = cap.read()
    cv2.imshow('a', img)
 
    # check for the key pressed
    k = cv2.waitKey(125)
 
    # set the key for the countdown
    # to begin. Here we set q
    # if key pressed is q
    if k == ord('q'):
        prev = time.time()
 
        while TIMER >= 0:
            ret, img = cap.read()
 
            # Display countdown on each frame
            # specify the font and draw the
            # countdown using puttext
            font = cv2.FONT_HERSHEY_SIMPLEX
            cv2.putText(img, str(TIMER),
                        (200, 250), font,
                        7, (0, 255, 255),
                        4, cv2.LINE_AA)
            cv2.imshow('a', img)
            cv2.waitKey(125)
 
            # current time
            cur = time.time()
 
            # Update and keep track of Countdown
            # if time elapsed is one second
            # than decrease the counter
            if cur-prev >= 1:
                prev = cur
                TIMER = TIMER-1
 
        else:
            ret, img = cap.read()
 
            # Display the clicked frame for 2
            # sec.You can increase time in
            # waitKey also
            cv2.imshow('a', img)
 
            # time for which image displayed
            cv2.waitKey(2000)
 
            # Save the frame
            cv2.imwrite('camera.jpg', img)
 
            # HERE we can reset the Countdown timer
            # if we want more Capture without closing
            # the camera
 
    # Press Esc to exit
    elif k == 27:
        break
 
# close the camera
cap.release()
  
# close all the opened windows
cv2.destroyAllWindows()

Producción:

Publicación traducida automáticamente

Artículo escrito por AyushMalik y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *