'OpenCV'가 포함된 글 3개를 찾았습니다.

  1. 2010/05/07 Visual Studio 2010에서 Target Platform 선택하는 방법 by PB (5)
  2. 2009/06/12 OpenCV 1.1pre1 highgui(cvcam)와 MFC를 이용한 카메라 연결 by PB (22)
  3. 2009/05/15 OpenCV 설치하기(Visual Studio 6.0) by PB (1)
Visual Studio 2010이 출시되었다. 물론 난 가난한 개발자(일명 Hungry Developer)이기 때문에, 유일한 방법인 Visual Studio 2010 C# Express를 설치하였다. 첫 설치의 느낌은 느리다.

어쩌튼 Visual Studio 2010에 관한 정보들은 넘처나니깐 넘어가고,
OpenCV를 이용한 개발을 하기 위해 환경 구축 중 Build할 때 에러가 발생하였다.

OpenCVSharp Error Message


에러 메시지를 보고 바로 이유를 알았다. "C#에서는 32bit로 만들어진 C++ DLL을 사용하기 위해서는 x86으로 타겟 플랫폼을 설정해야한다." 라는 생각이 들었다. (이 문제로 엄청 오랜 시간을 소요한 적이 있어서 바로 알 수 있었다.)

하지만, 두둥!
Visual Studio 2010 C# Express에서 프로젝트 설정 > 속성 의 값을 확인하였는데 타겟 플랫폼을 설정하는 란이 없었다.

Visual Studio 2010 C# Express build configuration


위의 사진처럼 타겟 플랫폼에 관한 정보가 없었다. 단지 무료 Express 버젼이라서 그런 것도 없는 것이야!
하고 고민하였지만 해결 방법은 매우 쉬웠다.

Tools > Options > Project & Solution 선택 후 오른쪽의 체크 박스 중 Show advanced build configurations 체크

만약 위의 Project & Solution 메뉴가 없다면 아래쪽의 Show all settings를 체크하면 나타날 것이다.
왜 이렇게 감춰둔게 많아진거니? VS2010!!

위의 작업을 마치면 이제 원하는 Build 옵션, 타겟 플랫폼을 설정할 수 있다.


Visual Studio 2010 뭔가 디자인도 이쁘고, 쾌적한 느낌이지만...
속도는 확실히 느리다. 뭔가 방법이 없니?

바보였다. 위의 에러는 내가 OpenCV 2.0 파일을 넣어두는 바람에 발생했던 것이었다 ㅠ_ㅠ
2010/05/07 15:28 2010/05/07 15:28
일단 시작하기 전에 이 글은 MFC의 다이얼로그의 Picture Control로 OpenCV를 이용해서 캠 영상을 뿌리기 위한 방법을 알려주는 글입니다.^^v 쉽게 말해서~ 초보용입니다!!

OpenCV의 설치는 했으니 이제 캠과 컴퓨터를 연결해주는 아주 생각만 해도 어렵고 복잡해 보이는 일을 처리해야된다. 하지만 이런 작업들도 OpenCV 라이브러리에 다 들어있다고 하니 cvcam , 이름만 들어도 두근두근 거리게 멋지군!

나도 중간에 안 사실이지만 OpenCV 1.1부터는 cvcam이 사라지고 highgui 속에 포함된다!
다시 말해서 cvcam.lib 는 더이상 없고 함수명도 조금 달라졌다.


1. MFC 프로젝트의 생성

학교에서 지원해주는 Visual Studio 2008(VS는 너무 비싸다, 지원해주는걸 써야지^^;)을 이용해서 간단한 MFC  프로젝트를 생성한다. 그리고 프로젝트 속성에서 추가 라이브러리로
cv.lib cxcore.lib highgui.lib

을 추가한다.

OpenCV 프로젝트 설정 - 라이브러리 추가



2. stdafx.h 파일 수정



기본적으로 OpenCV를 위한 필요한 헤더 파일을 추가한다.

3. UI의 제작

.rc 파일을 수정하여 자신이 사용할 다이얼로그의 디자인을 구성한다.

간단한 UI 구성



4. MediaGestureDlg.h 헤더파일 수정


위의 멤버변수 및 함수를 추가하여준다. 위의 변수들은 m_thread 는 OpenCV를 이용해서 실시간으로 캠으로부터 이미지를 캡쳐해내기 위한 변수이고 m_msgLog 는 로그용, m_pCameraWnd는 픽처컨트롤용 핸들이다.

위에 것이 이해가 안된다면 MFC 공부하러 고고씽!!

5. MediaGestureDlg.cpp 파일 수정

BOOL CMediaGestureDlg::OnInitDialog() 속에 기본적으로 핸들값과 기본설정을 한다.


위의 소스는 쓰레드의 생성과 중지이기 때문에 쓰레드 관련해서 조금만 공부하면 쉽게 이해가 될 것이기 때문에 또 간단하게 넘어가고 제일 중요한 OpenCamera() 함수이다. ManageThread에도 존재하고 있는데 여기서 무한루프를 돌기 때문제 짧고 건조하게 짜주는게 좋지 않을까?

하지만 영상처리! 조금씩 쓰다보면 복잡해진다. 헛소리 그만하고 OpenCamera는 다음과 같이 작성한다




위의 소스에서 AddLog()는 개인적으로 필요해서 사용하는 함수이기 때문에 무시해도 된다. 기본적인 내용은 OpenCV의 내용과 동일하기 때문에 따로 설명할 것은 없다.

다음으로 소스의 가장 위쪽에 부모 파라미터 포인터 자식포인터를 위해서 아래와 같이 define문을 선언한다.



그리고 마지막으로 다이얼로그가 종료될 때 쓰레드도 함께 종료시킬 수 있도록 DestoryWindow를 재정의한다.



이렇게만 하면 아래처럼 정상적으로 프로그램이 작동하게 된다. 참 쉽죠잉~!

하지만, 이제부터 본격적인 영상처리의 입문인게요!! 푸하하하!!!

OpenCV를 이용한 다이얼로그



그리고 정말 마지막으로 허접한 위의 소스를 다운 받고 싶은 분은 아래의 링크를 눌러주세요!!



위의 소스는 OpenCV설치하기 에 적힌 것처럼 OpenCV를 사용하기 위한 설정을 마쳤다면 컴파일 하였을 경우 바로 실행될 것이다. 참고로 Visual Studio 2008로 제작하였다.

2009/06/12 00:02 2009/06/12 00:02
 졸업작품으로 영상처리 구현을 할 필요가 있어서 생판 첨해보는 영상처리를 당장 이번에 오는 월요일까지 만들어내야만 했다. 일단 간단한 프로토타입 프로그램이라도 만들어내라니깐 빨리 만들기 위해서 영상처리 관련 정보를 찾다보니 제일 많이 걸리는 것이 OpenCV였다.

 솔직히 내가 사용하는 것이 어디서 만들던 그런 것은 중요한 것이 아니다.  제작해주신 많은 오픈소스 업체와 관련자 분들께 죄송합니다 (__) 꾸벅, 어쩔 수 없잖아. 바쁜데 ㅠㅠ
Download : http://sourceforge.net/projects/opencvlibrary

위의 주소에서 일단 OpenCV 라이브러리를 다운 받는다.  역시 윈도우가 이런 면에서 편한 것 같다. 부담없이 윈도우용으로 패키지 된 OpenCV_1.1pre1a.exe (오늘 2009.05.15) 을 다운 받아서 바로 설치하였다.

[ Visual Studio 6.0 설정]

1. VS6.0 Option 설정 (한번만 하면 됨!)

1) Tools > Options > Directories(탭) 을 선택한다. 그리고 아래와 같이 Show directores for: 의 값을 Include files로 선택한다.

#01 VS6.0 Option 설정 - Include files 

그리고 아래의 값들을 추가시켜준다.
"C:\Program Files\OpenCV\cv\include"
"C:\Program Files\OpenCV\cxcore\include"
"C:\Program Files\OpenCV\otherlibs\highgui"
"C:\Program Files\OpenCV\cvaux\include"
"C:\Program Files\OpenCV\otherlibs\_graphics\include"

2) Show directores for: 의 값을 Library files

#02 VS6.0 Option 설정 - Library files

위의 화면처럼 아래의 값을 추가하여준다.
"C:\Program Files\OpenCV\lib"

3) Show directores for: 의 값을 Source files
"C:\Program Files\OpenCV\cv\src"
"C:\Program Files\OpenCV\cxcore\src"
"C:\Program Files\OpenCV\cvaux\src"
"C:\Program Files\OpenCV\otherlibs\highgui"
"C:\Program Files\OpenCV\otherlibs\_graphics\src"

위와 동일하게 설정하면 된다.

#03 VS6.0 Option 설정 - Source files 



2. VS6.0 프로젝트 설정 (OpenCV를 사용하는 프로젝트마다 필요)

#04 VS6.0 Project 설정

Project > Settings > Link(탭) 으로 들어가서 Object/library modules 에
cv.lib cxcore.lib highgui.lib

을 넣어준다. 그리고 이제 프로그래밍을 하면 된다^ㅡ^v

 

3. 간단한 소스




4. 에러(0xc0150002)의 발생

#05 OpenCV 컴파일&실행 중 에러

위의 세팅되로 다 하였지만 에러가 떠버렸다. 이건 뭥미! (-- );

(0xc0150002) 에러의 발생 알아보니 OpenCV_1.1pre1a.exe 버젼의 경우에는 Visual Studio 2005를 기반으로 개발되어있다고 한다.  그래서 DLL 파일 자체게 2005에서 만들어져서 VS6.0에서 사용할 때는 "초기화 할 수 없습니다" 라는 에러를 발생한다.

-0- 너무 최신 버젼(?)이라서 생기는 단점이다. 이를 해결하기 위해서는 아래에 MS사에서 제공되는 패치를 설치하면 해결할 수 있다.

Download : http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&displaylang=en

그렇게 패치까지 하고 나니깐 성공적으로 컴파일이 되었다 :)

#06 OpenCV 이미지 뛰우기 성공

드디어 캠을 통한 영상처리의 첫 발걸음 중... OpenCV를 설치하는 순간이다!
2009/05/15 18:22 2009/05/15 18:22