Я начал изучать OpenCV недавно, очень понравилось,
но я столкнулся с проблемой, захватываю видео с камеры а в результате получается видео с рассинхронным временем,
оно длиннее/короче за реальное время записи.
Вот пример кода:
...
CvVideoWriter *cvVideoWriter=cvCreateVideoWriter("video.avi",CV_FOURCC('f', 'f', 'd', 's'),25,cvSize(320,240),1);
...
while(true)
{
c_frame = cvQueryFrame(capture);
...
cvWriteFrame(cvVideoWriter,c_frame);
...
if(cvWaitKey(40)>=0)break;
}
в результате получается алгоритм:
цикл
{
захват картинки
обработка картинки
запись видео кадра
пауза 40 мс
}
в идеале задержка 40 мс дает ровно 25 кадров, но на захват обработку и сохранение тоже уходит время,
в результате получается задержка между кадрами 40мс+обработка == неопределенное время задержки которое зависит от загрузки цпу а значит и неверно рассчитвыается FPS
в результате видео записывается ровно в 25 кадров, но длительность видео не совпадает с реально записанным временем.
Скажите как разобраться в этом, как обрабатывается нормализация продолжительности видео?