Video I/O API
OpenCV에서 비디오 파일을 처리하기 위해서는 cv::VideoCapture 클래스를 이용한다. 관련 예제들을 참고하면 이런 식이다.
#include "opencv2/opencv.hpp"
namespace cv;
VideoCapture vc;
if ( !vc.open( "path_to_video_file" ) )
return -1;
namedWindow( "video" );
while (1)
{
Mat frame;
vc >> frame;
imshow( "video", frame );
if ( waitKey( 30 ) > = 0 ) break;
}
opencv_ffmpeg
위의 코드를 실행해보면 거의 비디오 파일을 열지 못한다. (아주 기초적인 codec만 가능한 것 같음). 이것은 OpenCV에서 AV codec 라이브러리로 사용하는 ffmpeg에 연결되지 못하기 때문인데 해결 방법은 역시 아주 간단하다. (32bit 환경 기준)
- OpenCV/3rdparty/ffmpeg 디렉터리에 있는 opencv_ffmpeg.dll 파일을 기존 opencv dll 파일이 있는 디렉터리에 복사한다. (또는 OpenCV/3rdparty/ffmpeg 디렉터리를 path로 지정한다)
- 자신이 사용하고 있는 OpenCV 버전을 이용하여 dll 파일명 뒤에 숫자를 붙인다. 예를 들어 OpenCV 2.4.6을 사용하고 있는 경우 opencv_ffmpeg246.dll로 파일명을 바꾸어 준다.