본문 바로가기

Programming/image processing

openCV 동영상/카메라 관련내용 정리

동영상


동영상/카메라 열기
CvCapture 구조체
 - 카메라 또는 동영상 파일로 부터 프레임을 받아오는데 필요한 정보를 가지고 있음


*MPG, AVI 파일 다루기
#define cvCaptureFromFile cvCreateFileCapture
 -CvCapture* cvCreateFileCapture(const char *filename) / cvCaptureFromFile
   param : filename - 동영상 파일
   return : 실패 -NULL (파일이 없거나, 코덱이 없는 경우)


* 카메라로부터 영상 받기
#define cvCaptureFromCAM cvCreateCameraCapture
 -CvCapture* cvCreateCameraCapture(int index) /cvCaptureFromCAM
  param : index - 카메라 번호
                또는 어떤 형식의 카메라를 사용할 것인지 지정.
                     (카메라 한대인 경우 CV_CAP_ANY 사용)


 


프레임 받기
내부 메모리에 받기
-cvGrabFrame() / cvRetrieveFrame()
외부 메모리에 받기
-cvQueryFrame()


 -int cvGrabFrame(CvCapture * capture)
   return : return - 성공 1 CvCapture *capture 내부 버퍼에 캡쳐한 영상 복사




카메라로 영상 받아서 보기

void testViewCamera()
{
 IplImage*image;
 CvCapture *capture;
 char *captureWindow = "camera";


 //카메라 캡쳐 초기화
 // 0번째 연결된 카메라로부터 연결
 if( !(capture = cvCaptureFromCAM(0)))
 {
  printf(" 프레임을 가져올수 없습니다\n");
  return ;
 }

 //카메라에서 잡은 프레임을 반환한다.
 image = cvQueryFrame(capture);
 cvNamedWindow(captureWindow, CV_WINDOW_AUTOSIZE );
 cvShowImage(captureWindow, image);

 while(1)
 {
  // 카메라에서 잡은 프레임을 반환한다.
  image = cvQueryFrame(capture);

  //영상 데이터를 창에서 보여준다
  cvShowImage( captureWindow, image);

  if( cvWaitKey(10) == 27 )
   break;

 }

 //해제 및 카메라 연결종료
 cvReleaseCapture(&capture);
 cvDestroyWindow(captureWindow);

 return ;

}