OpenCV / не может открыть файл AVI

Я использую OpenCV для обнаружения морганий. Я смог запустить свой проект с записью потока с камеры, и все было в порядке. Я пытался проверить свой алгоритм на базе файлов * .avi, но я не могу открыть ни один из них. Я проверил их версию и загрузил соответствующие кодеки, но они все еще не работают.
Я решил попытаться хотя бы попытаться загрузить клип, используя этот код, который я нашел где-то в Интернете:

 int main( int argc, char** argv ){
int key = 0;

// Initialize camera and OpenCV image
//CvCapture* capture = cvCaptureFromCAM( 0 );
CvCapture* capture = cvCaptureFromAVI( "file.avi" );
IplImage* frame = cvQueryFrame( capture );

// Check
if ( !capture )
{
fprintf( stderr, "Cannot open AVI!\n" );
return 1;
}

// Get the fps, needed to set the delay
int fps = ( int )cvGetCaptureProperty( capture, CV_CAP_PROP_FPS );

// Create a window to display the video
cvNamedWindow( "video", CV_WINDOW_AUTOSIZE );

while( key != 'x' )
{
// get the image frame
frame = cvQueryFrame( capture );

// exit if unsuccessful
if( !frame ) break;

// display current frame
cvShowImage( "video", frame );

// exit if user presses 'x'
key = cvWaitKey( 1000 / fps );
}

// Tidy up
cvDestroyWindow( "video" );
cvReleaseCapture( &capture );

return 0;

}

все же это все еще ничего не меняет и захватить все еще NULL. Есть идеи, что я мог бы сделать сейчас?
Заранее спасибо!

E: я использую OpenCV 2.4.6 на 64-разрядных Windows

1

Решение

Код кажется правильным.

Вы пометили вопрос как C ++, но IplImage является производным от библиотеки Intel Image Processing и является частью встроенной библиотеки OpenCV C. в библиотеке OpenCV C ++ я думаю, что нет IplImage (или не должен использоваться), и вы должны использовать cv::Mat вместо.

По поводу проблемы:
Вы уверены, что скомпилировали OpenCV с надлежащей поддержкой ffmpeg (или любой другой библиотеки видео)? Убедитесь, что вы установили необходимые кодеки, а затем перекомпилируйте ваш opencv с необходимыми флагами. Может помочь.

Убедитесь, что выходные данные установки cmake opencv содержат похожий текст:

found gstreamer-base-0.10
GTK+ 2.x: YES
FFMPEG: YES
GStreamer: YES
V4L/V4L2: Using libv4l

PS. FFMPEG: ДА

0

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

у меня была такая же проблема,
тогда я использую класс VideoCapture вместо этого,

http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html?highlight=videocapture#VideoCapture

0

Я думаю, что не правильные кодеки установлены. Нам нужно установить правильные кодеки, следуя совету OpenCV по адресу http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html. Проверьте раздел VideoWriter :: VideoWriter. Нам нужны видеокодеки от FOURCC на http://www.fourcc.org/codecs.php. Быть осторожен. Установка может установить мусор, а также кодеки. Не все кодеки распознаются. По крайней мере, теперь у меня есть mpeg4 и DivX, и я могу открыть Megamind.avi, используемый собственной демонстрационной программой OpenCV.

0