Cfile3.uf .115176494D2EAD82158A58

Cam 영상 출력해보기

지금까지 VS2010과 OpenCV 2.1라이브러리를 이용한 MFC 프로그래밍 기초에 대해서 알아봤습니다.

우리가 하려고 하는 것이 동영상 처리이므로 이번 시간에는 Cam으로부터 영상을 받아와서 출력하는 방법에 대해서 알아보겠습니다.

먼저 새 프로젝트를 Win32 콘솔 응용 프로그램 형식으로 만들어 줍니다.

Cfile3.uf .115176494D2EAD82158A58

 

OpenCV 2.1 라이브러리를 사용하기 위한 각종 세팅은 당연히 해주셔야 겠죠? 자세한 내용은“Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”를 참고하세요.

 

그 후 다음과 같이 코딩합니다.

// CamTest.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.

//

 

#include "stdafx.h"

#include 

#include 

 

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);

}

수행 결과는 다음과 같습니다.

 

Cfile26.uf .150E7F4F4D2EAD83053A3C

 

Reference
정성환 외 1명/컴퓨터 비전 실무 프로그래밍/홍릉과학출판사/2007/388p~389p

cfile30.uf.140EDF474D2EAE6C3B94E5.pdfcfile24.uf.142589474D2EAE6E083F38.zip

 

Similar Posts

  • |

    TCP 폭주(혼잡)제어

    TCP의 폭주제어에서 예약방식을 못 쓰고 피드백 기반 방식을 사용하여야 하는 이유를 설명하시오. 예약 방식의 경우 데이터 전송 중 경로상의 라우터에서 폭주 혹은 에러가 발생했을 경우 송신자는 계속 데이터를 보내게 되어 혼잡이 가중된다. 이를 해결하기 위해 피드백 방식을 사용한다.송신자는 약간의 데이터만 전송하여 도착 여부를 확인 후 점점 전송량을 늘려간다. 이처럼 네트워크의 상태에 따라 송신측에서 전송량을 조절하여야 한다….

  • RGB 컬러 공간 분리 – 메뉴 기반 구현2

    이번에는 지난 시간에 해 봤던 “RGB 컬러 공간 분리 – 메뉴 기반 구현(http://deios.kr/407)”의 새 창으로 여는 부분을 조금 더 일반화 하고, MFC에 적합하게 만들어 보겠습니다.   먼저 새 창으로 이미지를 여는 전역 함수를 작성해 보겠습니다. App Class의 헤더 파일을 열어 가장 마지막에 다음과 같이 추가해 줍니다. void OpenByNewDocument(LPTSTR szTitle, IplImage * image);  이 전역 함수는…

  • Visual Studio 2010에서 OpenCV 라이브러리 빌드하기

    저번에 해봤던 “Visual Studio 2010에서 OpenCV 이용하기(http://deios.kr/395)”에서는 디버그 모드로 이용이 불가능한 문제가 있었습니다. 그래서 이 번에는 직접 OpenCV 2.1 라이브러리를 빌드해 보도록 하겠습니다.   먼저 CMake를 다운받습니다. CMake는 크로스 플렛폼 Make네요. http://www.cmake.org/cmake/resources/software.html 설치는 별 다른게 없습니다. 그냥 다음 연타로 CMake를 설치해 줍니다.   다음으로 OpenCV 2.1 Windows Version을 다운받고, 적당한 곳에 압축을 풀어 줍니다. http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.1/OpenCV-2.1.0-win.zip/download…

  • 모든 창 닫기 구현

    이번 시간에는 열려있는 모든 창을 닫는 기능을 구현해 보도록 하겠습니다. 먼저 리소스 뷰를 보기 좋게 꺼내어 두는게 좋겠죠? [보기] → [다른 창] → [리소스 뷰]를 클릭합니다.   이번엔 메뉴 바에 해당 기능을 추가할 예정입니다. 리소스 뷰에서 [Menu] → [IDR_*TYPE]을 선택한 후 그림과 같이 지정합니다. Caption : 모든 창 닫기 ID : ID_FILE_CLOSE_ALL Prompt : 열려진…

2 Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다