OpenCV 초보를 위한 강좌 1편
OpenCV 는 인텔에서 만든 강력한 영상처리 라이브러리입니다. 강력한 기능과 성능에도 불구하고 3D 의 오픈소스 라이브러리인 OpenGL 처럼 알려지지도 않고, 활발하게 개발되지도 않고, 자주 쓰이지도 않아 안타까운 심정입니다. 더욱이 국내에는 아직 활성화된 커뮤니티가 없어 자료를 구하기도 어려운 실정입니다. 그리하여 본인이 자료를 수집하고 공부하는 과정에서 부딪친 문제점들의 해결방법들과 습득한 지식들을 강좌를 통해 풀어나가 보려고 합니다. 강좌는 다음과 같은 목차로 진행될 예정이며 예제 위주와 간결한 문체를 사용하여 정리 하도록 하겠습니다. 개발 환경은 별도로 거론하지 않는다면 다음과 같습니다.
- Windows XP Platform
- Visual C++ 6.0
- OpenCV beta 5.0a
- 목 차 -
1. OpenCV 란 무엇인가?
2. OpenCV 설치하기
3. OpenCV 셋팅
3.1 Visual C++ 6.0
3.2 Visual Studio .Net
4. OpenCV 테스트
- 본 문 -
1. OpenCV 란 무엇인가?
- OpenCV(Open Source Computer Vision) 인텔에서 만든 강력한 영상처리 라이브러리입니다.
- 기초 영상처리서부터 고급 수준의 영상처리 까지 상당한 량의 알고리즘들이 함수로 구현되어 있습니다.
- Binarization, Noise, Motion Detect, Edge Detect, Pattern Recognition, Hidden Markov Model 등등
- 오픈소스로서 스펙만 맞추면 자신의 알고리즘도 라이브러리에 등록 시킬 수 있습니다.
- 인텔의 OpenCV 사이트 http://www.intel.com/technology/computing/opencv/index.htm
2. OpenCV 설치하기
- OS Platform 에 맞게 OpenCV 라이브러리 다운받아 설치합니다.
- Linux 와 Windows 용이 있고 Mac OS 에서도 돌아간다고 합니다.
- 최신 OpenCV 가 Release 되는 곳
http://sourceforge.net/projects/opencvlibrary
- 다운받기 OpenCV beta 5.0a for Window platform
http://nchc.dl.sourceforge.net/sourceforge/opencvlibrary/OpenCV_b5a.exe
http://keihanna.dl.sourceforge.net/sourceforge/opencvlibrary/OpenCV_b5a.exe
3. OpenCV 셋팅
기본적을 OpenCV 를 돌아가게 하려면 크게 4가지 작업을 해주어야 합니다.
1. 첫번째, Visual Studio 셋팅에서 디렉토리 추가하기
개발 환경에서 컴파일러가 헤더 및 라이브러리 파일들을 찾을 수 있도록 한번만 셋팅해 주면 됩니다.
- Include files
C:\PROGRAM FILES\OPENCV\CXCORE\INCLUDE
C:\PROGRAM FILES\OPENCV\CV\INCLUDE
C:\PROGRAM FILES\OPENCV\OTHERLIBS\HIGHGUI
C:\PROGRAM FILES\OPENCV\OTHERLIBS\CVCAM\INCLUDE
- Library files
C:\PROGRAM FILES\OPENCV\LIB
2. 두번째, 프로젝트에 Link 하기
라이브러리 파일들을 링크 해 줍니다.
원칙적으로는 소스 코드에 쓰인 라이브러리만 링크 해주면 되지만 일일이 어디에 속해 있는 함수인지 알기가 번거로움으로 일반적으로는 앞에 세가지를 기본적으로 링크하면 됩니다.
cxcore.lib, cv.lib, highgui.lib, cvcam.lib
3. 세번째, 소스파일에 header 파일 include 하기
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
4. 네번째, dll 파일 복사하기
C:\Program Files\OpenCV\bin 폴더에서 다음과 같은 파일들을 Workspace 파일이 있는 폴더에 복사 합니다.
만약에 라이브러리를 사용하지 않았을 경우에는 필요한 파일만 복사하면 됩니다.
cv097.dll, cxcore097.dll, cvcam097.dll, highgui097.dll
3.1 Visual C++ 6.0
1. 메뉴에서 Tools >> Options >> Directories 에서 다음과 같은 디렉토리를 추가합니다.
- Include files 항목에서 추가 할 디렉토리
C:\PROGRAM FILES\OPENCV\CXCORE\INCLUDE
C:\PROGRAM FILES\OPENCV\CV\INCLUDE
C:\PROGRAM FILES\OPENCV\OTHERLIBS\HIGHGUI
C:\PROGRAM FILES\OPENCV\OTHERLIBS\CVCAM\INCLUDE
- Library files 항목에서 추가 할 디렉토리
C:\PROGRAM FILES\OPENCV\LIB
2. 메뉴에서 Project >> Settings >> Link 에 다음과 같은 파일들을 링크합니다.
Win32 console 로 프로젝트를 생성하셔야 Project 메뉴가 활성화 됩니다.
좌측 상단에 Settings For 항목은 'All configurations' 로 두고 아래 파일들을
Object/library modules: 란에 적어 넣습니다.
cxcore.lib cv.lib highgui.lib cvcam.lib
3. 소스코드에 다음과 같은 헤더 파일들을 include 해줍니다.
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
4. 다음 폴더에서 나열된 dll 파일들을 현재 작업중인 소스파일이 있는 곳에 복사합니다.
- 폴더: C:\Program Files\OpenCV\bin
- 파일: cv097.dll, cxcore097.dll, cvcam097.dll, highgui097.dll
3.2 Visual Studio .Net
위의 과정과 동일하지만 메뉴가 조금 다릅니다.
1. 메뉴에서 Tools >> Options >> Projects >> VC++ Directories 에서 다음과 같은 디렉토리를 추가합니다.
- Include files 항목에서 추가 할 디렉토리
C:\PROGRAM FILES\OPENCV\CXCORE\INCLUDE
C:\PROGRAM FILES\OPENCV\CV\INCLUDE
C:\PROGRAM FILES\OPENCV\OTHERLIBS\HIGHGUI
C:\PROGRAM FILES\OPENCV\OTHERLIBS\CVCAM\INCLUDE
- Library files 항목에서 추가 할 디렉토리
C:\PROGRAM FILES\OPENCV\LIB
2. 메뉴에서 Project >> Properties >> Linker >> Input 에 다음과 같은 파일들을 링크합니다.
Win32 console 로 프로젝트를 생성하셔야 Project 메뉴가 활성화 됩니다.
좌측 상단에 Configuration 항목은 'All Configurations' 으로 하고 'Additional Dependencies' 란에 아래 파일들을 적습니다.
cxcore.lib cv.lib highgui.lib cvcam.lib
3. 소스코드에 다음과 같은 헤더 파일들을 include 해줍니다.
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
4. 다음 폴더에서 나열된 dll 파일들을 현재 작업중인 소스파일이 있는 곳에 복사합니다.
- 폴더: C:\Program Files\OpenCV\bin
- 파일: cv097.dll, cxcore097.dll, cvcam097.dll, highgui097.dll
4. OpenCV 테스트
위의 과정을 통하여 기본 셋팅이 끝났으면 OpenCV 를 이용하여 다음과 같은 간단한 이미지 뷰어를 만들어 보겠습니다. 소스 파일과 VC++ 6.0 에서 컴파일 할 수 있도록 셋팅된 workspace 파일을 아래 링크에 첨부하였습니다.
http://cafe.naver.com/opencv/6
- 소스 코드(압축 파일 첨부)
// 소스 코드 시작
#include <cv.h>
#include <highgui.h>
void main()
{
IplImage* image = 0; // image 선언
image = cvLoadImage("t9t9.jpg", 1); // t9t9.jpg 파일을 읽어 들임
cvNamedWindow( "T9-viewer", 1); // 윈도우 생성
cvShowImage( "T9-viewer", image ); // 이미지를 보여줌
cvWaitKey(0); // 키 입력을 기다림
cvDestroyWindow( "T9-viewer" ); // 윈도우 종료
}
// 소스 코드 끝
- 결과 화면
- 첨부파일
Copyrights (c) 2005 OpenCV.co.kr. All rights reserved.
Media System Lab., Yonsei University
by Dong-Chul Kim, e-mail: opencv at opencv.co.kr
- T9T9.com
'CLASS' 카테고리의 다른 글
[OpenCV] 윤곽(contour) 추출, 에지(edge) 추출 중급강좌 (0) | 2006.01.03 |
---|---|
[OpenCV] OpenCV 를 이용한 영상 이진화(Binarization) 초급강좌 (8) | 2005.11.11 |
[OpenCV] OpenCV 기초강좌 - 2편 : 카메라 입력받기 (7) | 2005.11.06 |
[OpenCV] 입력 받은 영상 AVI 로 저장하기 추가 소스 - DirectX 버전 (3) | 2005.11.05 |
[OpenCV] OpenCV 기초강좌 - 기본 셋팅 소스 for VC++ 6.0 & VS.Net (0) | 2005.11.04 |