Как синхронизировать OpenCV Caputrevideo с кодом сохранения изображения - PullRequest
0 голосов
/ 28 апреля 2020

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 () Я не получаю дважды один и тот же кадр. Я не могу найти хороший метод для обеспечения регулярности между кадрами, и мне кажется невозможным сделать это таким образом ...

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