2010/10/17

OpenCV 2.1 + TBB 를 Visual Studio 2010 에서 컴파일하기

OpenCV 가 2.1 버전에서 OpenMP 를 버리고 Threading Building Blocks(이하 TBB)를 선택하였는데 성능면에서 어떠한 이득이 있을지는 모르겠다. 실제로 테스트를 해 보기 위해서 OpenCV 2.1 버전을 TBB 를 활성화하여 컴파일을 해보려 했지만 쉽지 않았다.



인터넷에서 해당 정보를 찾아 보았지만 TBB 를 포함한 컴파일에 대한 설명은 많지도 않고 자세하지도 않았다. 그러던 중 한 사이트(http://blog.csdn.net/effenberg11/archive/2010/07/05/5712724.aspx)를 발견하고 그 실마리를 얻었다.




준비사항




우선 CMake 를 설치한다. 설치하지 않고도 가능하겠지만 많은걸 입력해 주어야 한다.

그리고 TBB 와 OpenCV 를 작업 경로에 압축을 풀어 놓는다. 아래는 이번 작업에 사용 된 폴더 구조이다.




OpenCV 경로 : D:\Work\OpenCV\x86

TBB 경로 : D:\Work\OpenCV\tbb30_20100406oss




설치된 CMake  GUI 버전을 실행시킨다. 그리고 소스 코드 경로(Where is the source code)에 OpenCV 의 경로 D:\Work\OpenCV\x86 를 입력하고 바이너리 생성 경로(Where to build the binaries)에 OpenCV 의 경로 D:\Work\OpenCV\x86 를 입력하고 하단의 "Configure" 버튼을 클릭한다.




"Configure" 버튼을 누르면 컴파일러를 선택하는 대화상자가 나오는데 이 대화상자에서 "Visual Studio 10" 과 "Use default native compilers" 를 선택한다.




컴파일러 선택 후 "Configure" 버튼을 클릭하면 온통 붉은색으로 뒤덥힌 리스트를 만나게 된다. 그리고 WITH_TBB 가 체크되지 않음을 확인할 수 있다.




TBB 를 활성화 하기 위해 WITH_TBB 항목을 선택하고 "Configure" 버튼을 누른다.




그러면 TBB에 대한 잘 못 된 항목(TBB_INCLUDE_DIR) 값이 리스트 상단에 표시가 된다.




TBB_INCLUDE_DIR 항목에 TBB 경로의 Include 경로를 지정하고 "Configure" 버튼을 누른다.




다음 에러는 TBB_LIB_DIR 경로 오류가 발생한다.




TBB_LIB_DIR 에 TBB 의 lib 폴더에서 플랫폼과 컴파일러 버전을 맞추어 경로를 선택한다.





경로 설정을 마치고 "Configure" 버튼을 누르면 모든 에러가 해제되고 새롭게 등록된 두 항목을 확인할 수 있다.




그리고  Use TBB 가 활성화 된 것을 확인할 수 있다.




이제 OpenCV를 압축해제 해 놓은 경로(D:\Work\OpenCV\x86)에서 OpenCV.sln 파일을 Visual Studio 2010 으로 열어 ALL_BUILD 프로젝트의 속성 대화상자를 연다.




속성 대화상자에서 VC++ Directories 항목중에서 Executable, Include, Library Directories 에 TBB 관련 경로를 입력한다.




프로젝트의 속성을 편집하는 것은 이 글의 가장 위에서 언급한 사이트로 부터 얻은 정보인데 이 속성을 편집하지 않아도 OpenCV는 에러없이 컴파일 된다. (TBB가 정상동작 할지는 확실하지 않지만...)




이제 ALL_BUILD 만 Build 하면 된다.

Build 를 마치면 Binary 생성 경로에 bin 과 lib 폴더 안에 관련 dll 과 lib 파일이 생성된다.




이제 실제로 되는지 테스트하는 일만 남았다.<

Original Post : http://neodreamer-dev.tistory.com/469

No comments :

Post a Comment