관리 메뉴

코코야이야기

[c++] OpenCV 카메라영상 본문

프로그래밍/OpenCV

[c++] OpenCV 카메라영상

코코야 2015. 9. 25. 16:00
반응형

소스코드

//카메라로부터 비디오 영상 입력  Canny 및 에지 검출

#include "cv.h"
#include "highgui.h"
int main()
{
 CvCapture* capture = cvCaptureFromCAM(0); //cvCaptureFromCAM(index) , 카메라 번호 index로부터 비디오획득을 초기화하여 CvCapture* 포인터를 반환
 if(!capture)
 {
  printf("You need to connect a camera to your computer.");
  return 0;
 }

 int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
 //cvGetCaptureProperty(capture, property_id) , capture에 연결된 비디오 또는 카메라로부터 property_id에 아래와 같은 상수를 주면 이에 따른 속성을 반환
 //CV_CAP_PROP_FRAME_WIDTH : 비디오 프레임의 가로크기
 //CV_CAP_PROP_FRAME_HEIGHT : 비디오 프레임의 세로크기 ...

 int height = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT);

 IplImage* frame;
 IplImage *grayImage = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);
 IplImage *edgeImage = cvCreateImage(cvSize(width,height),IPL_DEPTH_8U,1);

 cvNamedWindow("grayImage",CV_WINDOW_AUTOSIZE);
 cvNamedWindow("edgeImage",CV_WINDOW_AUTOSIZE);

 while(1)
 {
  frame = cvQueryFrame(capture); //cvQueryFrame(capture) - capture로 부터 영상프레임을 잡고 영상포인터를 반환.
  if(!frame)
   break;
  cvCvtColor(frame,grayImage,CV_BGR2GRAY);
  cvCanny(grayImage,edgeImage,50,100,3);

  cvShowImage("grayImage",grayImage);
  cvShowImage("edgeImage",edgeImage);

  char chKey = cvWaitKey(10);
  if(chKey==27) //esc 키 누르면 종료
   break;
 }

    cvReleaseCapture( &capture );
 cvReleaseImage(&grayImage);
 cvReleaseImage(&edgeImage);
    cvDestroyAllWindows();
    return 0;
}

 

 

 

출력영상

 

반응형

'프로그래밍 > OpenCV' 카테고리의 다른 글

[c++] OpenCV 동영상재생 트랙바  (0) 2015.09.28
[c++] OpenCV 템플릿매칭2  (0) 2015.09.27
[c++] OpenCV 템플릿매칭1  (0) 2015.09.25
[c++] OpenCV 특징점검출  (0) 2015.09.24
[c++] OpenCV 원검출  (0) 2015.09.24
Comments