2017년 4월 18일 화요일

OpenCV 빌드하기 (OpenCV 3.2 + CUDA + TBB)

1. Environment
  • Window 7 이상
  • 64bit
  • Visual Studio 
  • current setting version
    • OpenCV 3.2
    • Cuda Toolkit 8.0
    • CMake 3.8.0
    • TBB 2017

    2. Preparatios

    3. Step
    1. Preparations : Install and download
      • cmake
      • cuda
      • tbb
      • opencv
    2. Run cmake
      1. Set configuration
      2. Code Generation
    3. Build by Visual Studio
      1. Build All
      2. Make dll, lib
    4. OpenCV DLL test
      1. VS Setting
      2. Sample Test

       3-① CMake Setting
    • TBB Setting
      • TBB_ENV_INCLUDE : 
        • /tbb2017_20170226oss_win/tbb2017_20170226oss/include/
      • TBB_ENV_LIB : 
        • /tbb2017_20170226oss_win/tbb2017_20170226oss/lib/intel64/vc14/tbb.lib
      • TBB_ENV_LIB_DEBUG : 
        • /tbb2017_20170226oss_win/tbb2017_20170226oss/lib/intel64/vc14/tbb_debug.lib
      • TBB_VER_FILE : 
        • /tbb2017_20170226oss_win/tbb2017_20170226oss/include/tbb_stddef.h
    • OpenCV Cotrib Setting
      • OPENCV_EXTRA_MODUKES_PATH
        • /opencv_contrib-master/opencv_contrib-master/modules
    • CMake Setting 









    4. Video

    Step 1 : 준비


    Step 2 : CMake 설정

    Step 3 : build, VS 셋팅 그리고 예제 테스트


    5. reference

    #Tags for search
    OpenCV Build, TBB, CUDA, CMAKE

    댓글 31개:

    1. 안녕하세요. build에 대한 동영상이 추가적으로 계속 올라오나요?

      답글삭제
      답글
      1. 네!, 제가 몇일 휴가를 보냈습니다. 작업 중이니 조금만 기다려 주세요. youtube 구독이나 +1 해 놓으시면 소식을 받을 수 있습니다. 감사합니다.

        삭제
      2. 매번 정말 감사합니다.!!

        삭제
    2. 죄송하지만 제가 빌드과정에서
      아래와 같은 오류가 계속 발생하는데요


      C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\include\xmmintrin.h(79): fatal error C1083: 포함 파일을 열 수 없습니다. 'malloc.h': No such file or directory

      현재 visual c++ 2017 community version을 사용하고 있고
      위의 해당 경로로 가봤는데 해당파일이 없는데요.. 해결방법이 있을까요? 버전을 바꿔 사용하는게 나을까요?

      답글삭제
      답글
      1. 음.. 마음 편하게 2015 버전 이하로 바꾸는 것이 좋을 것 같습니다.
        방금 저도 2017 community 버전으로 해봤는데 에러가 많이 뜨네요.. 이거 다 고치려면.. 인터넷 많이 찾아봐야 겠는데요? 그래서 그냥 버전 바꾸는 것이 좋을 것 같고 2015 버전 이하로 작업하셔도 아무 상관없습니다.

        삭제
      2. VS2017은 아직 CUDA8.0을 지원 못하는걸로 알고 있습니다.

        삭제
    3. 이번에 vc2015버전으로 낮추면서 다시 빌드하는데 잘 안되네요.ㅠㅠ cuda나 tbb 또는 contrib 세개를 cmake에서 함께 만들려고 할 때 오류가 나서 셋다 포기하면 바로 configuration complete 나오네요.. 비디오에서 하라는대로 했는데 무엇이 문제일까요?
      https://plus.google.com/115017531395370342291/posts/ALSUaALUfT2
      사진이 올라갈 곳이 없어서 제 구글+에 올려두었습니다. 함 봐주시면 감사하겠습니다!

      답글삭제
      답글
      1. test, world는 체크 하지 말고요, 이미지 보니깐 update_protofiles도 체크를 하지 말아 보세요.
        보니깐 TBB는 found라고 되어 있네요.
        cuda, tbb, contrib 설정하는 거 별거 아니니깐 다시 도전해 보세요!

        삭제
    4. define 을 써도 fopen 오류가 계속 뜨는데 어떻게 해야할까요?

      답글삭제
      답글
      1. 안되면.. fopen 대신에 fopen_s 를 사용해 보세요.
        방법은
        FILE * fp;
        fopen_s(&fp, "sss.txt", "r");
        fclose(fp);

        이렇게 사용하시면 됩니다.

        삭제
    5. 강의 잘 들었습니다.
      openCV에 대한 관심이 생겨서 inflearn을 통해 알게되어 듣게 되었는데요,
      강의가 정말 하나하나 세세히 알려주셔서 큰 도움이 되고있습니다.
      질문이 생겨 댓글로 여쭤보려고 합니다.
      1. CUDA사용은 nvidia계열 그래픽카드 사용시 권장되는것으로 알고있는데 intel내장그래픽으로는 강의진행에 무리가 있을지 궁금합니다.
      2. 1번의 내용과 관련이 있을지 모르겠지만 현재 똑같이 진행해본 결과 다른부분은 막힘이 없었는데 WITH_TBB 설정때문에 오류가 자꾸 생깁니다. Parallel framework 항목도 TBB가 아닌 Concurrency로 뜨는데 혹시 해결방법이 없을까요?

      답글삭제
      답글
      1. 1.
        cuda는 nvidia사 그래픽 카드만 사용가능하고
        기타 다른 그래픽 카드는 (ati사) opencl로 gpu 병렬 처리 가능합니다.
        opencv에서는 cuda 말고도 ocl이라는 것으로 gpu병렬 처리 가능하도록 지원합니다.
        내장 그래픽 카드는 gpu병럴처리가 안됩니다.
        강의를 따라함에 있어서, gpu 병렬처리는 필수가 아닙니다. cpu로 모두 구현이 가능하고 병렬성이 있는 부분을 gpu를 이용해서 속도를 최적화 시키는 것 뿐입니다.

        2.
        tbb 패스 설정을 모두 잘 하셨나요?
        다시 한번 확인해보세요.
        tbb도 필수는 아니고요, 다만 이것을 사용하면 opencv코드를 최적으로 돌릴수 있는 부분이 많습니다.
        처음에 셋팅에 너무 힘빼고 스트레스 받지 말고요 우선 기본적인 빌드구성으로 공부를 하다가.. 익숙해지만 빌드를 최적으로 가져가는 것이 어떨까요?

        삭제
      2. 고맙습니다.
        여건이 갖춰지면 cuda도 사용해보도록 하겠습니다.
        위의 사항 외에는 어려움없이 잘 따라가고 있는 중입니다.
        양질의 강의 항상 감사드립니다~!!

        삭제
    6. windows 10, vs 2017 ent., cmake-3.8.2-win64-x64, opencv-master를 다운받아 강의 내용을 따라 하는데..
      cmake에서 오류가 나옵니다. 원인과 해결방법에 대해 좀 알려주세요.

      ......정상적 설치 되는듯 하다가...
      에러창이 나옵니다.
      error in configuration process,projext files may be invalid
      자세한 내용은...

      IPPICV: Download: ippicv_2017u2_win_intel64_20170418.zip
      CMake Error: Problem with archive_write_finish_entry(): Can't restore time


      CMake Error: Problem extracting tar: D:/OpenCV_LIB/source/opencv-master/.cache/ippicv/75060a0c662c0800f48995b7e9b085f6-ippicv_2017u2_win_intel64_20170418.zip


      CMake Error at cmake/OpenCVDownload.cmake:202 (message):
      IPPICV: Unpack failed: 1
      Call Stack (most recent call first):
      3rdparty/ippicv/ippicv.cmake:42 (ocv_download)
      cmake/OpenCVFindIPP.cmake:243 (download_ippicv)
      cmake/OpenCVFindLibsPerf.cmake:37 (include)
      CMakeLists.txt:588 (include)


      Configuring incomplete, errors occurred!
      See also "D:/OpenCV_LIB/build/CMakeFiles/CMakeOutput.log".
      See also "D:/OpenCV_LIB/build/CMakeFiles/CMakeError.log".


      답글삭제
      답글
      1. 네.. ipp 관련 문제로 보이네요..
        cmake에 configuration 하면 이런 에러가 뜨는 거죠?
        저도 처음 보는 에러인데.. 구글에 찾아보겠습니다.
        혹시 cmake의 전체 설정을 스크린 캡처해서 올려줄수 있나요?

        삭제
      2. 캡쳐화면은 어떻게 보내드릴까요?

        삭제
      3. 제 이메일 feelmare@daum.net로 보내주셔도 되는데, 다름 사람들이 참고할 수 있도록 어디 업로드하고 링크주소를 적어 주시면 좋을 것 같아요.
        감사합니다

        삭제
    7. 원인은 알수 없어서 일단 체크를 없애고 cmake를 다시 실행하니 나머지는 되네요...
      근데...
      vs로 빌드를 하니..
      ========== 빌드: 성공 10, 실패 33, 최신 0, 생략 0 ==========

      그중 일부.. 아래의 내용입니다.
      10> D:/OpenCV_LIB/build/modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Release/cuda_compile_generated_gpu_mat.cu.obj
      10>
      10>
      10>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe"이(가) 종료되었습니다(코드: 1).
      10>"opencv_core.vcxproj" 프로젝트를 빌드했습니다. - 실패
      .
      .
      14>Failed to run C:/Program Files (x86)/Microsoft Visual Studio/2017/Enterprise/VC/bin (占쏙옙占쏙옙占쏙옙 占쏙옙占쏙옙占쏙옙 찾占쏙옙 占쏙옙 占쏙옙占쏙옙占싹댐옙.
      14>
      14>).
      14>CMake Error at cuda_compile_generated_absdiff_mat.cu.obj.cmake:206 (message):
      14> Error generating
      14> D:/OpenCV_LIB/build/modules/cudaarithm/CMakeFiles/cuda_compile.dir/src/cuda/Release/cuda_compile_generated_absdiff_mat.cu.obj
      14>
      14>
      14>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe"이(가) 종료되었습니다(코드: 1).
      14>"opencv_cudaarithm.vcxproj" 프로젝트를 빌드했습니다. - 실패
      cuda는 GeForce GTX 980M 을 사용합니다.
      http://www.nvidia.co.kr/object/geforce-gtx-900m-graphics-cards-kr.html#pdpContent=2
      를 보면 CUDA코어 1536에 사용되는 걸로 되어 있습니다.
      그래서 실패 원인을 모르겠습니다.
      경로가 문제인가요?

      답글삭제
      답글
      1. 네, cmake부터 찬찬히 봐야 겠네요.
        그리고 cuda, tab, contrib 다 빼고 빌드 한번 해보실래요?
        그리고 빌드가 실패가 계속 되면 지치니깐
        http://cvlecture.marearts.com/2016/12/opencv-build-shared-opencv.html
        여기 가면 제가 빌드 해놓은 것을 받을 수 있으니깐, 받아서 간단한 코드를 테스트 해보시고 돌아가면 우선 공부를 진행하는 것도 좋겠습니다.
        감사합니다.

        삭제
    8. 작성자가 댓글을 삭제했습니다.

      답글삭제
    9. 설치하다가 오류가 생겼는데요....2013으로 빌드를 했는데...

      오류 766 error C1083: 포함 파일을 열 수 없습니다. 'D:/?섏뾽?먮즺/OpenCV/source/opencv_contrib-master/modules/surface_matching/src/precomp.hpp': No such file or directory D:\수업자료\OpenCV\build\modules\surface_matching\opencv_surface_matching_pch.cpp 1

      파일이 없는 경우는 인터넷에서 전부 찾아야되나요?...;;

      답글삭제
      답글
      1. 아니요, 파일을 일일이 찾아야 하는 건 아니고요.
        실제로 이 파일이 없는지 확인하기
        한글 경로 사용하지 않기
        cmake 설정 다시 확인하기

        우선 이정도로 답변 드릴께요..

        감사합니다.

        삭제
    10. 안녕하세요? 여러 군데 구글링해도 자료가 없어 질문 글 올립니다.

      VS 2015 64 Debug/Release Build 에서 모두 아래와 같은 에러가 1개 발생합니다.
      Project : opencv_python3
      File : Microsoft.CppCommon.Targets
      Line : 171

      MSB6006 "cmd.exe" exited with code 1 에러가 발생합니다.

      어디를 어떻게 수정해야 될지 궁금합니다.

      감사합니다.

      답글삭제
      답글
      1. 음... 이것만 봐서는 저도 잘 모르겠는데요?? opencv_python3 프로젝트 빌드할때 에러 났다?? python 관련된 것을 체크하지 말고 다시 빌드 해보실래요? 죄송합니다. 도움이 안되네요..

        삭제
    11. vs2015 에서 cuda 빌드 가능한가요? 계속 에러나네요..

      답글삭제
      답글
      1. 네 가능합니다. 에러 내용을 알 수 있을까요?

        삭제
      2. cuda부터 싹다 재설치하고 동영상보고 따라하고있습니다. ㅋㅋ기도에서 빵터졌네요.

        삭제
      3. 1060이 있어서 cuda사용하면 되긴한데 TBB는 그래픽카드가 없어도 되는건가요?

        삭제
      4. TBB는 gpu, 즉 cuda가 필요없습니다.
        재밌게 봐주셔서 감사합니다. ^^

        삭제
      5. 작성자가 댓글을 삭제했습니다.

        삭제
    12. 음 빌드중엔 vs를사용하면 안되는건가요? 프로젝트가 외부에서 수정되었다고 그러네요.
      그리고 opencv 공홈에서 받는거랑 git에서 받는거랑 차이점이있나요?
      git에서 받은거는 opencv-master.zip이고 world 체크하니까 error in configuration process,projext files may be invalid 가 뜨고
      공홈에꺼는 opencv3.3.zip이고 world 체크해도 error 메세지가 안뜨긴하네요.

      답글삭제

    OpenCV Build shared, OpenCV 빌드한 것 공유

    OpenCV 3.1 64bit build (github master downed on 2017-01-31) 64bit for window opencv contribute module 포함 cuda 8.0 tbb 2016-11-28 ( sha...