-
정지 영상 출력Programming/OpenCV 2015. 3. 21. 14:27
정지 영상 출력 OpenCV
영상 파일을 불러와서 화면에 출력하는 프로그램
#include "highgui.h" int main( int argc, char** argv ) { IplImage* img = cvLoadImage( argv[1] ); cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE ); cvShowImage("Example1", img ); cvWaitKey(0); cvReleaseImage( &img ); cvDestroyWindow("Example1"); }
프로그램 컴파일 후 명령행 인자로 영상 파일의 이름을 입력하고 실행하면
해당 영상을 불러와서 화면을 보여준다.
사용자가 아무 키나 누르면 창이 닫히고 프로그램이 종료된다.
IplImage* img = cvLoadImage( argv[1] );
- 위 문장은 영상을 불러오는 작업
- 함수 cvLoadImage()는 파일의 이름을 검사하여 파일 형식을 자동으로 판단
- 영상을 불러올 때 필요한 메모리 공간은 함수 내부에서 자동으로 할당
- cvLoadImage() 함수는 BMP, DIB, JPEG, JPE, PNG, PBM, PGM, PPM, SR, RAS, TIFF 등의 영상 포맷을 읽어올 수 있음
- 불러온 영상 데이터 구조체의 포인터를 반환
- 이 영상 구조체 이름은 IplImage이며, OpenCV는 단일 채널, 다중 채널, 정수형, 실수형 등 모든 형태의 영상 데이터를
- IplImage 구조체 하나로 표현 가능
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE );
- 영상을 표시할 윈도우를 하나 만드는 일을 한다.
- HighGUI 라이브러리에서 제공
- 첫 번째 인자로 넘어오는 문자열(Example1)은 윈도우의 이름으로 등록, 해당 윈도우 상단(타이틀 바)에 표시
- HighGUI 라이브러리 함수들은 윈도우 이름을 이용해 윈도우를 구분하고 동작을 제어
- 두 번째 인자에는 윈도우 속성을 지정, 0(기본값) 또는 CV_WINDOW_AUTOSIZE가 들어갈 수 있음
- 0이 지정될 시 불러오는 영상의 크기에 상관없이 윈도우 크기는 일정하게 고정, 대신 영상이 윈도우의 크기에 맞게 확대 또는 축소되어 나타남
- 값이 CV_WINDOW_AUTOSIZE이면 불러오는 영ㅇ상의 실제 크기에 맞게 윈도우의 크기가 자동으로 조절
cvShowImage("Example1", img );
- 해당 영상을 윈도우에 출력한다.
- cvNamedWindow() 함수에 의해 지정된 윈도우의 이름을 첫 번째 인자로 받는다.
- 해당 윈도우가 CV_WINDOW_AUTOSIZE 속성으로 생성되었다면 윈도우 크기를 영상 크기에 맞게 변화시킨다.
cvWaitKey(0);
- 프로그램의 동작을 잠시 멈추고 사용자로부터 키 입력을 기다린다.
- 양의 정수가 전달되면 프로그램은 밀리초(millisecond) 단위로 지정한 시간만큼 대기하였다가 동작을 재개
- 인자값이 0 또는 음수가 전달되면 프로그램은 키가 눌려질 때까지 무한정 기다림
cvReleaseImage( &img );
- 영상을 사용한 후에는 반드시 할당된 메모리 공간을 해제해야 한다.
- 이를 위해 IplImage*의 주소값을 cvReleaseImage 함수에 넘겨주어야 한다.
- 이 함수 실행 후 img는 NULL로 설정된다.
cvDestroyWindow("Example1");
- 윈도우를 닫고, 윈도우 동작을 위해 동적 할당된 메모리 공간(*img 영상의 필셀 정보 복사본을 저장하는 윈도우 내부 버퍼)을 모두 해제
- 간단한 프로그램의 경우 할당된 모든 리소스들이 자동으로 반환되지만 함수를 직접 호출해 반환하는 것이 바람직
도스창 또는 명령프롬프트를 실행해exe파일명 영상파일
형태로 명령을 입력하면Example1이라는 제목의 창이 하나 나타나는 것을 확인할 수 있다.'Programming > OpenCV' 카테고리의 다른 글
cvSplit, cvMerge, cvFlip (0) 2015.04.14 IplImage 구조체 (0) 2015.04.12 CvMat 행렬 구조체 (0) 2015.03.27 기본 데이터 타입 (0) 2015.03.27 동영상 재생 (0) 2015.03.27