cv2: при считывании изображений с web-камеры в цикле первые 6 изображений не изменяются
Скрипт на Python сохраняет изображения с веб-камеры с интервалом 3 сек. Для теста я показываю пальцы руки, увеличивая количество на 1 для каждого нового снимка. Проблема в том, что первые 6 изображений всегда показывают только 1 палец, хотя, я ожидал, что количество пальцев будет увеличиваться с каждым снимком. Дальше, с 7 снимка количество пальцев увеличивается на 1. В итоге, на 10 снимке всего 5 пальцев, хотя должно быть 10.
import cv2
import time
class Get_photo:
def __init__(self):
# Initialize the camera
self.cap = cv2.VideoCapture(0)
def save_photo(self, photo_name):
# Check if the camera is opened correctly
if self.cap.isOpened():
self.ret, self.frame = self.cap.read()
# Save the image
if self.ret:
cv2.imwrite(f"test/{photo_name}.jpg", self.frame)
def close_cam(self):
# close cam
self.cap.release()
if __name__ == "__main__":
time_begin = time.time()
get_photo = Get_photo()
for count in range(0, 20):
time_start = time.time()
time.sleep(3)
get_photo.save_photo(count)
time_end = time.time()
print(f"Spent time on the picture: {time_end-time_start} seconds.")
get_photo.close_cam()
finish_time = time.time()
print(f"Total time spent: {finish_time-time_begin} seconds.")
Если переделать цикл так, чтобы каждый раз инициализировать объект класса и каждый раз закрывать камеру, то все отрабатывает правильно, но на это затрачивается больше времени.
Не могу понять, почему первые 6 изображений не меняются, а остальные отстают?
Для примера добавляю gif с демонстрацией, секундомера, где видно что снимки "отстают":
Т.к пауза между снимками 3 сек,то как минимум на последнем снимке должно быть время > 1 мин (20 снимков * 3 сек)
P.S: даная ошибка возникает на ОС: Ubuntu 20.04.6 LTS Протестировал этот код на windows 10 все работает отлично.