OpenCV를 이용하여 동영상 파일 출력하기.
( 작업환경 – OS : window8.1K , Tool : VisualStudio 2010 , OpenCV Ver : 2.4.11 )
(앞서 했던 설정을 기본으로한다.)
테스트에 앞서 프로젝트 폴더 내 테스트할 영상을 이동시켜둔다.
영상 출력이라고해서 어려워보이지만 OpenCV에서 기본 함수를 제공하므로 비교적 간단하다.
이미지 출력과 차이점은 이미지는 한장의 사진이라면 동영상은 여러장의 사진을 연속적으로 출력하는 것이라 볼 수 있다.
#include <opencv\highgui.h>
int main() { IplImage *frame; CvCapture *capture = cvCaptureFromAVI("test.MOV"); // 영상파일을 로드 cvNamedWindow("Test",0); // Window창을 생성
while(capture) { // capture에 영상이 로드 되었다면 출력 frame = cvQueryFrame(capture); // 영상을 프레임에 넣음 cvShowImage("Test",frame); // 영상을 띄움
if(cvWaitKey(1)==27){ // ESC(27) 을 누르면 탈출 cvReleaseCapture(&capture); break; } } cvDestroyWindow("Test"); return 0; } |
CvCapture형식의 capture에 영상을 저장한다.
동영상 파일을 불러올 때는
- cvCaptureFromFile() 이나
- cvCreateFileCapture() 또는
- cvCaptureFromAVI()중 하나를 선택하여 사용한다.
(인자로는 파일이름, 파일형식을 넣어준다).
파일 형식은 avi, wmv, mp4, 3gp, mkv, mov 등등이 사용 가능하다.
* PC에 달린 캠 영상을 출력하기위해서는
- cvCreateFromCAM(int index) 를 사용하면 된다.
Index 값으론 사용할 카메라를 지정한다. 카메라가 1개인 경우 혹은 여러 개 중에서 특정한 카메라를 지정하지 않을 경우는 -1을 사용한다. 만약 2개인 경우 index값이 0이면 카메라를 선택할 수 있는 창이 나타난다.
cvQueryFrame()함수는 동영상 혹은 카메라로부터 프레임을 읽고 반환하는 함수이다.
IplImage* cvQueryFrame( CvCaptuer* capture );
결과
사진으로 보이지만 영상파일이고 제대로 동작함을 확인할 수 있다.
'Study Note > Programming' 카테고리의 다른 글
[C++] time함수와 tm구조체 사용법 (0) | 2017.04.21 |
---|---|
[MFC] 정적인 그래프 그리기. (0) | 2017.02.07 |
[OpenCV] 이미지 출력하기. (0) | 2017.01.06 |
[OpenCV] 설치 및 설정 (VS) (0) | 2017.01.06 |
[MFC] assert() 함수 (1) | 2016.11.22 |