이번 시간은 MFC와 OpenCV의 기본 사용법 마지막 내용이 되겠습니다. Cam 영상을 Dialog에 뿌려주는 부분에서 기본 사용법이 끝났어야 하지만… 조금 아쉬운 관계로 더 진행해 봤죠… 저도 아직 초보단계지만, MFC와 OpenCV의 기본 사용법은 뭐 없습니다… MFC야… GUI프로그래밍을 위해서 그냥 쓴 것이고… OpenCV는 영상을 받아오고, 출력하는 부분만 하면 기본은 끝난거 아닌가요? 지금까지 “오픈소스 OpenCV를 이용한 컴퓨터 비전 […]
[태그:] MFC
정지영상 캡춰기능 구현
이번 내용도 후딱 넘어가겠습니다. 이전 시간까지 Cam에서 영상을 받아와 Dialog로 뿌려주는 부분을 했었죠? 이번 시간에는 이 동영상의 스틸 컷(Still Cut)을 만들 수 있게 정지영상으로 캡춰하는 기능을 구현해 보도록 하겠습니다. 참고로 동영상으로 저장하고 싶다면 cvReleaseVideoWriter, cvWriteFrame, cvReleaseVideoWriter를 적절하게(?) 쓰시면 됩니다. 정지영상 캡춰기능은 정말 간단합니다. 버튼 하나 만들구요, 그 버튼을 누르면… 전에 만들었던 전역 함수 기억하시죠? […]
모덜리스(Modeless) Dialog로 변환하기
이전 시간에 만들었던 모달(Modal) Dialog를 모덜리스(Modeless) Dialog로 변환해 보겠습니다. Modal Dialog는 Dialog가 실행되는 동안 다른 작업을 하지 못하고, Modeless Dialog는 프로그램 실행 흐름을 방해하지 않는다는 것 정도는 알고 계시죠? 자 그럼 이전 시간 “MFC – Cam 영상 출력해보기(http://deios.kr/420)”에 만들었던 View Dialog를 멋지게 바꿔 보겠습니다. OnCamView함수를 다음과 같이 수정합니다. void CMFC_OpenCVApp::OnCamView() { // TODO: 여기에 명령 […]
MFC – Cam 영상 출력해보기
이번 시간에는 MFC프로젝트에서 Cam 영상을 받아오는 부분을 구현해 보겠습니다. “동영상 처리” → “영상 보기”메뉴를 추가하고, 해당 메뉴를 클릭했을 때, 영상을 뿌려주는 Dialog를 띄웁니다. Dialog에서 “시작” 버튼을 클릭했을 경우 Caption이 “중지”로 바뀌고, Static 영역에 영상을 뿌려주게 만들어 보겠습니다. 먼저 사용할 다이얼로그부터 만들어야겠죠? [리소스 뷰]에서 [리소스 추가]를 선택합니다. [Dialog]가 선택된 것을 확인하고 [새로 만들기]를 […]
Cam 영상 출력해보기
지금까지 VS2010과 OpenCV 2.1라이브러리를 이용한 MFC 프로그래밍 기초에 대해서 알아봤습니다. 우리가 하려고 하는 것이 동영상 처리이므로 이번 시간에는 Cam으로부터 영상을 받아와서 출력하는 방법에 대해서 알아보겠습니다. 먼저 새 프로젝트를 Win32 콘솔 응용 프로그램 형식으로 만들어 줍니다. OpenCV 2.1 라이브러리를 사용하기 위한 각종 세팅은 당연히 해주셔야 겠죠? 자세한 내용은“Visual Studio 2010에서 OpenCV MFC 프로젝트 만들기(http://deios.kr/400)”를 참고하세요. […]
공간 영역 필터링 – Dialog Box 기반 구현
이번 시간에는 Dialog Box기반으로 OpenCV를 이용하는 방법에 대해서 알아보겠습니다. 공간 필터링(Spatial Filtering)이란 영상에 있는 공간 주파수 대역을 제거하거나 강조하는 필터 처리입니다. 사용되는 필터의 계수에 따라 특정 주파수를 제거하거나 강조하게 되며, 필터 마스크(Filter Mask)또는 회선 마스크의 가중치 선택이 공간 필터의 행동을 결정하게 됩니다. 영상처리에 사용되는 회선 마스크는 홀수 차원의 정방형 마스크가 사용되게 됩니다. 필터는 […]
RGB 컬러 공간 분리 – 메뉴 기반 구현2
이번에는 지난 시간에 해 봤던 “RGB 컬러 공간 분리 – 메뉴 기반 구현(http://deios.kr/407)”의 새 창으로 여는 부분을 조금 더 일반화 하고, MFC에 적합하게 만들어 보겠습니다. 먼저 새 창으로 이미지를 여는 전역 함수를 작성해 보겠습니다. App Class의 헤더 파일을 열어 가장 마지막에 다음과 같이 추가해 줍니다. void OpenByNewDocument(LPTSTR szTitle, IplImage * image); 이 전역 함수는 […]
RGB 컬러 공간 분리 – 메뉴 기반 구현
이번에는 본격적으로 OpenCV를 사용하여 영상처리를 해 보겠습니다. 그 첫 단계로 메뉴기반 정지영상 처리를 해 볼 것이며, cvSplit함수를 사용하여 RGB 컬러공간을 분리하는 예제를 구현해 보겠습니다. 먼저 OpenCV 2.1 C API Reference에서 cvSplit함수를 찾아보면 다음과 같습니다. cvSplit함수는 다중 채널(Multi-channel)배열을 여러 개의 단일 채널(Single-channel) 배열로 분할하거나, 배열에서 단일 채널을 추출 할 수 있음을 알 수 있습니다. 또한, […]
클립보드 기능 구현
이번에는 자주 사용하는 기능인 C&P(Copy & Paste)를 구현해 보도록 하겠습니다. C&P를 구현하기 위해서는 이미지를 DIB(장치 독립 비트맵;Device Independent Bitmap)으로 변환하여 클립보드 영역에 넘겨주거나, 클립보드 영역에서 데이터를 받아오면 됩니다. 클립보드 영역으로 데이터를 넘겨주기 위하여 CopyClipBoard맴버함수, CopyToHandle 맴버 함수를 추가하여, ID_EDIT_COPY이벤트 핸들러에 등록합니다. 먼저 CopyClipBoard 맴버 함수를 Doc Class에 작성하겠습니다. 반환 형식 : void 함수 이름 […]
모든 창 닫기 구현
이번 시간에는 열려있는 모든 창을 닫는 기능을 구현해 보도록 하겠습니다. 먼저 리소스 뷰를 보기 좋게 꺼내어 두는게 좋겠죠? [보기] → [다른 창] → [리소스 뷰]를 클릭합니다. 이번엔 메뉴 바에 해당 기능을 추가할 예정입니다. 리소스 뷰에서 [Menu] → [IDR_*TYPE]을 선택한 후 그림과 같이 지정합니다. Caption : 모든 창 닫기 ID : ID_FILE_CLOSE_ALL Prompt : 열려진 […]