Я использую 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
Код кажется правильным.
Вы пометили вопрос как 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: ДА
у меня была такая же проблема,
тогда я использую класс VideoCapture вместо этого,
Я думаю, что не правильные кодеки установлены. Нам нужно установить правильные кодеки, следуя совету 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.