---
title: "Cam 영상 출력해보기"
id: "734"
type: "post"
slug: "413"
published_at: "2011-01-13T07:49:10+00:00"
modified_at: "2025-12-12T04:28:22+00:00"
url: "https://dworld.deios.kr/413/"
markdown_url: "https://dworld.deios.kr/413.md"
excerpt: "지금까지 VS2010과 OpenCV 2.1라이브러리를 이용한 MFC 프로그래밍 기초에 대해서 알아봤습니다. 우리가 하려고 하는 것이 동영상 처리이므로 이번 시간에는 Cam으로부터 영상을 받아와서 출력하는 방법에 대해서 알아보겠습니다. 먼저 새 프로젝트를 Win32 콘솔 응용 프로그램 형식으로 만들어 줍니다. OpenCV 2.1 라이브러리를 사용하기 위한..."
taxonomy_category:
  - "Study"
taxonomy_post_tag:
  - "AR"
  - "cam"
  - "MFC"
  - "opencv"
  - "VS2010"
  - "증강현실"
---

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

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

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

OpenCV 2.1 라이브러리를 사용하기 위한 각종 세팅은 당연히 해주셔야 겠죠? 자세한 내용은“[Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)](https://dworld.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);

}
```

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

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

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

### 이 글 공유하기:

- [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/413/?share=facebook)
- [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/413/?share=x)
-

### 이것이 좋아요:

좋아하기로드 중...

### *관련*

### 관련된 글:

1. [MFC – Cam 영상 출력해보기](https://dworld.deios.kr/420/)
2. [모덜리스(Modeless) Dialog로 변환하기](https://dworld.deios.kr/421/)
3. [정지영상 캡춰기능 구현](https://dworld.deios.kr/422/)
4. [Face Detect](https://dworld.deios.kr/423/)

## Similar Posts

- 오류제어 및 흐름제어 기능은 계층 2와 4에도 있다. 이들의 차잇점을 쓰시오. 2계층과 4계층의 차이점.2계층은 서로 연결된 두 노드간의 제어이며, 4계층은 단대단 제어이다.따라서 4계층의 오류제어와 흐름제어는 단말과 네트워크를 포함한 제어 기술이다.2계층의 오류 제어는 오류제어를 담당한다. 4계층의 오류제어는 송신측과 수신측 단대단 오류 제어이다.2계층의 흐름제어는 역시 인접노드간의 흐름 제어이고, 4계층의 흐름제어는 단대단 흐름제어이다. 관련된 글: 고속 네트워크 프로토콜의… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/373/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/373/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- cfile25.uf.20778B3C4F95B37218BD8A.pdf 관련된 글: [VS2010]LPCTSTR에서 char*로 형 변환하기 Cam 영상 출력해보기 HVR-2000 Series 이용하기 Wavelet Transform ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/461/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/461/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/402/](https://dworld.deios.kr/402/) “OpenCV 파일 저장기능 구현(http://deios.kr/401)”에 파일 저장기능과 파일 열기기능을 강화해 보도록 하겠습니다. 먼저 “새 이름으로 저장”시 자동으로 확장자를 추가하기 위해서 OnFileSaveAs함수를 수정하겠습니다. 수정 전 CFileDialog dlgFile(TRUE); CString fileName; const int c_cMaxFiles = 100; const int c_cbBuffSize = (c_cMaxFiles * (MAX_PATH + 1)) + 1; dlgFile.GetOFN().lpstrFile = fileName.GetBuffer(c_cbBuffSize); dlgFile.GetOFN().nMaxFile = c_cbBuffSize; int chk = dlgFile.DoModal(); fileName.ReleaseBuffer();… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/402/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/402/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- 함수종속 어떤 릴레이션 R에서 X와 Y를 의 애트리뷰트 집합의 부분집합이라 하자. X의 값 각각에 대해 시간에 관계 없이 Y의 값이 오직 하나만 연관되어 있을 때 Y는 X에 함수종속이라 하고 X →Y로 표기한다. 이 때, X를 결정자, Y를 종속자라고 한다. 제 1 정규형(1NF) 어떤 릴레이션 R에 속한 모든 도메인이 원자값만으로 되어 있다면 제 1 정규형이라고 한다. 제 2… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/374/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/374/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- [https://dworld.deios.kr/404/](https://dworld.deios.kr/404/) 이번 시간에는 드래그 앤 드롭(Drag & Drop) 기능을 구현해 보도록 하겠습니다. App Class의 InitInstance함수에 다음과 같은 코드를 추가하면 끝~! pMainFrame->DragAcceptFiles(); cfile8.uf.163148404D261B97190741.pdfcfile10.uf.133139404D261B9716AF4E.zip 관련된 글: Visual Studio 2010에서 OpenCV 이용하기 OpenCV 파일 저장기능 구현2 모든 창 닫기 구현 클립보드 기능 구현 ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/404/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/404/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...
- 메모리가 미래 통신에 있어서 병목 지점이 되는 이유를 설명하고 해결 방안을 제시하시오. 1) 메모리는 코드와 데이터를 함께 저장한다. 표현 계층이 개입한다면 메모리 연산이 증가하게 되어 병목 현상이 발생한다. -> 표현계층을 적게 사용한다.2) 각 계층 이동시 메모리 연산 증가. OSI-7-layer에서 각 계층 이동시 메모리 복사가 빈번하게 일어나게 된다. -> shared memory, page remapping, 계층 통합 처리3)… ### 이 글 공유하기: - [Facebook으로 공유하기 (새 창에서 열림)Facebook](https://dworld.deios.kr/371/?share=facebook) - [X에 공유 (새 창에서 열림)X](https://dworld.deios.kr/371/?share=x) - ### 이것이 좋아요: 좋아하기로드 중...

## 2 Comments

1. 핑백: [프로젝트 설정 파일 적용하기 | D's World](https://dworld.deios.kr/424/)
2. 핑백: [Face Detect | D's World](https://dworld.deios.kr/423/)

### 댓글 남기기[응답 취소](/413/?t=1784822493#respond)
