Python | Захват изображения с веб-камеры с интервалом времени - PullRequest
3 голосов
/ 30 апреля 2020

Я новичок в python и пытаюсь захватывать изображение с моей веб-камеры каждые 5 секунд.

import cv2 as cv
import time

camera = cv.VideoCapture(0)
name = 1

while(True):
 ret, image = camera.read()
 cv.imwrite('webcam'+str(name)+'.jpg', image)
 time.sleep(5)
 name+1

camera.release()
cv.destroyAllWindows()

Вопреки ожиданиям, цикл, кажется, не работает правильно и сохраняется только одно изображение (webcam1.jpg). Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 30 апреля 2020

Синтаксическая ошибка в следующей строке:

name+1

Это приводит к остановке сценария после первой итерации.

Возможно, вы захотите увеличить значение:

name += 1
0 голосов
/ 30 апреля 2020

Вы забыли поставить = в имени = 1. имя + = 1

0 голосов
/ 30 апреля 2020

Каждые 5 секунд этот код захватывает кадр. Вам просто нужно импортировать модуль времени и использовать его, вот и все.

import cv2
import time

capture = cv2.VideoCapture(0)
capture.set(3, 640)
capture.set(4, 480)
img_counter = 0
frame_set = []
start_time = time.time()

while True:
    ret, frame = capture.read()
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow('frame', gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
    if time.time() - start_time >= 5: #<---- Check if 5 sec passed
        img_name = "opencv_frame_{}.png".format(img_counter)
        cv2.imwrite(img_name, frame)
        print("{} written!".format(img_counter))
        start_time = time.time()
    img_counter += 1

Дайте мне знать, если это не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...