Python 3.8.1 Открыть cv 4.2.0.34 Окно 10
Я пишу сценарий, который может сохранять кадры точно с той же частотой кадров моей подключенной зеркальной камеры, я так понимаю частота кадров:
cap = cv2.VideoCapture(camera_number)
fps = cap.get(cv2.CAP_PROP_FPS)
, а затем у меня есть базовый * tkinter интерфейс 1013 * с кнопкой для запуска и остановки моей записи, и я сохраняю весь кадр в папке, которая выглядит следующим образом (упрощенно)
#importing module
import cv2
import numpy as np
import time
import tkinter as tk
cap = cv2.VideoCapture(camera_number)
fps = cap.get(cv2.CAP_PROP_FPS)
global currentFrame
currentFrame =0
window = tk.Tk() #Makes main window
##some tk stuff
def show_frame():
global currentFrame
flag, frame = cap.read()
#recording
if record == True:
name = 'data/frame' + str(currentFrame) + '.jpg'
cv2.imwrite(name, frame)
currentFrame += 1
##some tk stuff to display the image
lmain.after(agoodtimetowait, show_frame)
##some tk stuff to display the
show_frame()
window.mainloop() #tk loop
проблема в том, что: если мой код не идеально синхронизирован с камерой, я получаю какой-то кадр дважды, а иногда я пропускаю кадр, и я не могу знать, что в реальном времени, как в прошлом между двумя кадрами. Поскольку я хочу вычислить дифференциальные свойства между каждым кадром, мне нужно быть уверенным во времени между каждым кадром в реальной жизни.
переменная agoodtime должна ждать каждого l oop для изменения, чтобы быть уверенным, что когда я используйте cap.read () Я не получаю дважды один и тот же кадр. Я не могу найти хороший метод для обеспечения регулярности между кадрами, и мне кажется невозможным сделать это таким образом ...