지금까지 VS2010과 OpenCV 2.1라이브러리를 이용한 MFC 프로그래밍 기초에 대해서 알아봤습니다.
우리가 하려고 하는 것이 동영상 처리이므로 이번 시간에는 Cam으로부터 영상을 받아와서 출력하는 방법에 대해서 알아보겠습니다.
먼저 새 프로젝트를 Win32 콘솔 응용 프로그램 형식으로 만들어 줍니다.
OpenCV 2.1 라이브러리를 사용하기 위한 각종 세팅은 당연히 해주셔야 겠죠? 자세한 내용은“Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”를 참고하세요.
그 후 다음과 같이 코딩합니다.
// CamTest.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include <cv.h> #include <highgui.h> void CamImageProcess(IplImage *); int _tmain(int argc, _TCHAR* argv[]) { IplImage *image = 0; CvCapture *capture = cvCaptureFromCAM(0); cvNamedWindow( "Test cvCam", 0 ); while(1) { cvGrabFrame( capture ); image = cvRetrieveFrame( capture ); CamImageProcess(image); cvShowImage( "Test cvCam", image ); if( cvWaitKey(10) >= 0 ) break; } cvReleaseCapture( &capture ); cvDestroyWindow( "Test cvCam" ); return 0; } void CamImageProcess(IplImage *image){ // image 복사 IplImage *src = cvCloneImage(image); //Enhance detail filter - 물체를 둘러싼 것을 상세히 드러내는 효과를 냄. float kernel[] = { 0.0f/5.0f, -1.0f/5.0f, 0.0f/5.0f, -1.0f/5.0f, 9.0f/5.0f, -1.0f/5.0f, 0.0f/5.0f, -1.0f/5.0f, 0.0f/5.0f}; // CvMat 변환 CvMat mat_kernel = cvMat(3,3,CV_32FC1, kernel); // 필터링 수행 결과를 담을 영상 초기화 IplImage *dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, src->nChannels); // 필터링 수행 cvFilter2D(src, dst, &mat_kernel, cvPoint(-1, -1)); cvCopy(dst, image); cvReleaseData(&mat_kernel); cvReleaseImage(&src); cvReleaseImage(&dst); }
수행 결과는 다음과 같습니다.
Reference
정성환 외 1명/컴퓨터 비전 실무 프로그래밍/홍릉과학출판사/2007/388p~389p
cfile30.uf.140EDF474D2EAE6C3B94E5.pdfcfile24.uf.142589474D2EAE6E083F38.zip
2 thoughts to “Cam 영상 출력해보기”