DevGang
Авторизоваться

Реализация таймера для камеры с помощью OpenCV-Python

Большинство из вас, должно быть, хотя бы раз использовали таймер в камере. Это такая функция, которая устанавливает обратный отсчет перед щелчком затвора и созданием фотографии. В этом уроке мы с вами сделаем то же самое, а именно создадим собственный таймер для камеры, используя OpenCV-Python. Итак, давайте начинать!

Основная идея заключается в том, что мы включаем видео и каждый раз, при нажатии на определенную клавишу (здесь я использовал ‘q’), начинается обратный отсчет, создаются фотографии и сохраняются в нужном месте. В противном случае видео будет продолжаться. 

Мы будем использовать функцию cv2.putText() для прорисовки обратного отсчета на видеокадре. Эта функция имеет следующие аргументы:

cv2.putText(img, text, position, font, fontScale, color, thickness, lineType, bottomLeftOrigin)

Функция рендерит текст на входном изображении в указанной позиции. Если указанный шрифт не может отобразить какой-либо символ, он заменяется знаком вопроса.

Теперь давайте узнаем, как же реализовать эту функцию:

Шаги:

  • Откройте камеру с помощью функции cv2.VideoCapture()

Пока камера не открыта

  • Считаем кадр и отобразим его с помощью функции cv2.imshow()
  • Установим обратный отсчет таймера по кадрам. Я настроил так, что он будет считать кадры до тридцати, и начиная с десятого, начнет выводить на экран, чтобы это было заметно. Я решил, что лучше начинать с 10 кадра, иначе будет слишком быстро. Вы в свою очередь, можете установить его как угодно и куда угодно.
  • Установим ключ для начала обратного отсчета.
  • Добавим обработчик на клавишу и по нажатию будем выводить обратный отсчет на экран с помощью функции cv2.putText(). По окончании обратного отсчета сохраним кадр в нужном месте. В противном же случае видео будет продолжено.
  • При нажатии ‘Esc’ видео останавливается.

Код:

import cv2
import time

# Open the camera
cap = cv2.VideoCapture(0)

while True:
   # Read and display each frame
   ret, img = cap.read()
   cv2.imshow('a',img)
   k = cv2.waitKey(125)
   # Specify the countdown
   j = 30
   # set the key for the countdown to begin
   if k == ord('q'):
       while j>=10:
           ret, img = cap.read()
           # Display the countdown after 10 frames so that it is easily visible otherwise,
           # it will be fast. You can set it to anything or remove this condition and put 
           # countdown on each frame
           if j%10 == 0:
               # specify the font and draw the countdown using puttext
               font = cv2.FONT_HERSHEY_SIMPLEX
               cv2.putText(img,str(j//10),(250,250), font, 7,(255,255,255),10,cv2.LINE_AA)
           cv2.imshow('a',img)
           cv2.waitKey(125)
           j = j-1
       else:
           ret, img = cap.read()
           # Display the clicked frame for 1 sec.
           # You can increase time in waitKey also
           cv2.imshow('a',img)
           cv2.waitKey(1000)
           # Save the frame
           cv2.imwrite('D:/downloads/camera.jpg',img)
   # Press Esc to exit
   elif k == 27:
       break
cap.release()
cv2.destroyAllWindows()

А теперь посмотрим на результат:

 Пробуйте и совершенствуйте свои навыки коддинга!

Перевод статьи: https://theailearner.com/2019/03/18/set-camera-timer-using-opencv-python/

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу