본문 바로가기

언어/C++

OpenCV + IPP + TBB 사용법

출처:http://codens.info/643?category=173851


< OpenCV + IPP + TBB 빌드하는 방법 >

!! 일반빌드와 속도 테스트 결과 저는 차이가 없었습니다!


* OpenCV 2.4.8 빌드
    - 다운로드, 압축풀기 http://opencv.org/
    IPP설치방법 :  http://codens.info/642
    TBB설치방법 :  http://codens.info/641

    - 환경변수 설정
    IPPROOT = ipp 설치 경로 (끝이 ipp)
    IPP_H_PATH = IPP include 경로(옵션)
    TBB_INCLUDE_DIRS = TBB include 경로

    - CMake 실행
source code : ..xx../OpenCV-2.4.8/sources
build the binaries : ..xx../OpenCV-2.4.8/build2
        - Configure 버튼 클릭
        - 옵션 조정(체크할 옵션)
BUILD_EXAMPLES
WITH_IPP
WITH_TBB


    - 솔루션 빌드
- build2 폴더로 가서 OpenCV.sln 로드 
    -> ALL_BUILD 프로젝트를 시작 프로젝트로 설정하고 선택
        -> 메뉴 : Build -> Build Solution
    -> INSTALL 프로젝트 선택 해서 빌드
        %OPENVC%\install 경로에 빌드한 파일들이 설치된다.


//===============
* 속도 비교
http://www.shervinemami.info/timingTests.html
    - IPP와 TBB를 포함한 빌드와 포함하지 않은 빌드에 속도 차이가 없다. T.T
http://code.opencv.org/projects/opencv/wiki/ChangeLog 을 보면
2.4.3 버전 부터 내부적으로 병렬 처리를 하고있어서 TBB등이 없어도 된다고 한다.


//==============
* bgfg_gmg 프로젝트 속도 테스트 결과
    - BackgroundSubtractorGMG

- 속도 차이는 Debug, Release 만 속도 차이가 남
    Debug : 80ms, Release : 50ms

- 다음은 바꿔도 속도차이 없는 것
    - IPP, TBB 포함 빌드
    - HAVE_IPP
    - setUseOptimized(true); //CPU 기능 활용
    - setNumThreads(8);
    cv::setNumThreads() 함수에서 TBB( HAVE_TBB )가 선언되있지 않은 경우,
Microsoft Visual Studio를 이용하고 있으면  Concurrency Runtime ( HAVE_CONCURRENCY ) 을 기본으로 사용하게 된다.
2.4.3 부터는 기본으로 병렬프로그래밍을 지원한다.


//=======================

//아래는 그냥 참고용
- 전처리기 
HAVE_IPP;HAVE_TBB;

- include 경로 추가
$(TBBROOT)\include;$(IPPROOT)\include;$(OpenCV_IT)\include;

- library 경로 추가
Debug : $(TBBROOT)\lib\ia32\vc10;$(IPPROOT)\lib\ia32;$(OpenCV_IT)\lib\debug; 
Release : $(TBBROOT)\lib\ia32\vc10;$(IPPROOT)\lib\ia32;$(OpenCV_IT)\lib\release;

- 라이브러리 추가
ippvmmt.lib;ippccmt.lib;ippcvmt.lib;ippimt.lib;ippsmt.lib;ippcoremt.lib;
opencv_core248d.lib;opencv_flann248d.lib;opencv_imgproc248d.lib;opencv_highgui248d.lib;opencv_ml248d.lib;opencv_video248d.lib;

opencv_objdetect248d.lib;opencv_photo248d.lib;opencv_nonfree248d.lib;opencv_features2d248d.lib;opencv_calib3d248d.lib;

opencv_legacy248d.lib;opencv_contrib248d.lib;opencv_nonfree248d.lib;opencv_gpu248d.lib;opencv_photo248d.lib;opencv_legacy248d.lib;

opencv_ocl248d.lib;opencv_ml248d.lib;opencv_video248d.lib;opencv_objdetect248d.lib;opencv_calib3d248d.lib;opencv_features2d248d.lib;

opencv_flann248d.lib;opencv_highgui248d.lib;opencv_imgproc248d.lib;opencv_core248d.lib



'언어 > C++' 카테고리의 다른 글

Boost 라이브러리 설치  (0) 2018.01.20
마이크로초(Micro Second) 구하기  (0) 2018.01.20
Intel TBB 사용법  (0) 2018.01.20
Intel IPP 사용법  (0) 2018.01.20
windows IPP 설치 및 VC++ 작업환경 구성하기  (0) 2018.01.20