Как воспроизвести видео с помощью opencv?

Я пытаюсь воспроизвести видео с помощью opencv (видео представляет собой файл AVI, сохраненный на диске). Тем не менее, программа останавливает выполнение на следующей строке в cap_ffmppeg.cpp:

if(!ffmpegCapture ||
!icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn))
return 0;

Ошибка: Access violation reading location… так что ошибка сегмента происходит в первый раз capture >> frame это запустить.

Вот программа:

#include<iostream>
#include<fstream>
#include<cv.h>
#include<highgui.h>
#include<opencv2/nonfree/features2d.hpp>
using namespace std;
using namespace cv;int main(int argc, char *argv[])
{
if (argc <= 1)
{
printf("Usage: %s video\n", argv[0]);
return -1;
}

VideoCapture capture(argv[1]);if(!capture.isOpened())
{
printf("Failed to open the video\n");
return -1;
}

for(;;)
{
Mat frame;
capture >> frame; // get a new frame from camera
}

return 0;
}

Есть идеи, что я делаю не так?

1

Решение

если вы используете x64.
Пожалуйста, используйте opencv_ffmpeg245_64.dll, это решает проблему.
Или переименуйте opencv_ffmpeg245_64.dll в opencv_ffmpeg245, чтобы решить эту проблему.

1

Другие решения

Оказалось, что OpenCV не может воспроизводить несжатое видео. Сжатый это и все хорошо … не знаю, почему существует оригинальная проблема, хотя.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector