📜  使用 Python-OpenCV 将倒数计时器设置为捕获图像

📅  最后修改于: 2022-05-13 01:55:32.895000             🧑  作者: Mango

使用 Python-OpenCV 将倒数计时器设置为捕获图像

先决条件: OpenCV 简介

我们中的大多数人已经用我们的手机使用倒数计时器拍摄了图像。我们可以在OpenCV的帮助下在我们的计算机上做同样的事情。

但是在这里我们可以指定倒数计时器而不是选择指定的倒数计时器之一,并且每当按下特定键(比如说q )时,倒数计时器就会启动,我们将在 cv2 的帮助下在相机上显示倒计时.putText()函数,当它达到零时,我们将捕获图像,将捕获的图像显示固定的秒数(根据我们的需要)并将图像写入/保存到磁盘上。现在让我们看看如何执行此任务:

方法:

  • 首先,我们将以秒为单位设置倒数计时器的初始值。 (我们也可以将此作为用户的输入)。
  • 打开相机并使用创建一个视频捕获对象 cv2.VideoCapture()
  • 相机打开时
    • 我们将读取每一帧并使用cv2.imshow()显示它。
    • 现在我们将设置一个键(我们使用q )开始倒计时。
    • 只要按下这个键,我们就会开始倒计时。
    • 我们将在time.time()函数的帮助下跟踪倒计时,并使用cv2.putText()在视频上显示倒计时 函数。
    • 当它达到零时,我们将复制当前帧并使用cv2.imwrite()将当前帧写入磁盘上的所需位置 函数。
    • “Esc”我们将关闭相机。

下面是实现。

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()


输出: