ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual Studio 2015에서 OpenCV 3.2 연동하기
    OpenCV/Windows개발 환경&라이브러리 빌드 2016. 12. 29. 22:19

    본 포스팅에 대한 업데이트된 문서가 존재합니다..


    Visual Studio 2017에서 OpenCV 3.2.0를 사용하는 방법

    http://webnautes.tistory.com/1132




    크리스마스 이브 전날에 OpenCV 3.2가 나왔었네요.. 거의 1년 만에 나온 듯합니다.   http://opencv.org/downloads.html 에서OpenCV for Windows를 선택하여 다운로드를하면 opencv-3.2.0-vc14.exe 파일이 다운로드 됩니다. 





    압축이 풀릴 경로를 C:\로 바꾸고 Extract를 클릭해서 압축을 풀어주었습니다.  주의할 점은 기존 설치된 OpenCV 3.1과 같은 디렉터리(c:\opencv\)에 압축이 풀리기 때문에  OpenCV 3.1 설치된 것을 삭제하던가 아니면 디렉터리 이름을 바꾸어 주어야 합니다..





    이번에 배포된 파일의 이름(opencv-3.2.0-vc14.exe) 에서도 알 수 있듯이..  VC14( Visual Studio 2015  ) 64비트용만 빌드되어 있습니다. 다른 버전의 Visual Studio를 사용하거나 32비트용이 필요하면 빌드를 새로 해주어야 합니다.





    이제 설정하는 과정을 설명합니다..


    1. 새로운 Win32 콘솔 응용 프로그램 프로젝트를 새로 생성합니다.






    2. 빈 프로젝트 선택하고, SDL은 체크 해제해주었습니다.





    3. 솔루션 탐색기에서 소스파일을 선택하고 마우스 우클릭하여 나온 메뉴에서 "추가 > 새 항목"을 차례로 선택해줍니다.





    4. C++ 파일을 선택하고 이름을 main.cpp로 바꾸고 추가를 클릭합니다.





    5. Visual Studio 메뉴바에 있는 솔루션 플랫폼을 x64로 변경합니다.





    6. 메뉴에서 "프로젝트 > 속성"을 선택합니다.  C/C++에 있는 추가 포함 디렉터리 항목에 c:\opencv\build\include를 추가해줍니다.





    7. 링커에서 추가 라이브러리 디렉터리 항목에 c:\opencv\build\x64\vc14\lib를 입력합니다.





    8.  링커-입력의 추가 종속성 항목에 opencv_world320d.lib;를 추가해줍니다.





    9. c:\opencv\build\x64\vc14\bin 경로에 있는 opencv_world320.dll, opencv_world320d.dll, opencv_ffmpeg320_64.dll를 프로젝트 폴더의 "x64 > Debug" 디렉토리로 복사해줍니다.  

    아직 관련 설정은 안했지만 opencv_world320.dll는 릴리즈로 컴파일시를 대비해서 복사해둡니다.






    10. 웹캠으로부터 영상을 읽어와 화면에 출력해주는 예제를 main.cpp에 붙여넣고서 태스트해보았는데 문제 없이 잘 동작합니다..


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #include "opencv2/opencv.hpp"  
    #include <iostream>  
      
    using namespace cv;  
    using namespace std;  
      
      
      
    int main(intchar**)  
    {  
        //웹캡으로 부터 데이터 읽어오기 위해 준비  
        VideoCapture capture(0);  
        if (!capture.isOpened())  
        {  
            cout << "웹캠을 열수 없습니다." << endl;
            return 1;
        }  
      
        //캡처 영상을 320x240으로 지정  
        capture.set(CAP_PROP_FRAME_WIDTH,320);  
        capture.set(CAP_PROP_FRAME_HEIGHT,240);  
      
      
        Mat frame;  
        namedWindow("input"1);  
      
     
        while(1)  
        {  
            //웹캡으로부터 한 프레임을 읽어옴  
            capture >> frame;  
      
            //화면에 영상을 보여줌
            imshow("input", frame);  
      
           //ESC키 누르면 종료
           if (waitKey(1== 27 ) break;
        }  
        
        return 0;  
    }  
    cs


    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구독하기


    댓글 6

    • 제로프레임 2017.04.07 21:32


      질문 하나만 드리겠습니다.

      OpenCV 3.2.0 윈도우 버전이 64비트 라이브러리만 지원하는 것 같은데,

      라즈베리용으로 개발하려고 보니 지금 설치한 라즈비안은 32비트 운영체제네요.

      거기다가, 같이 사용하려는 라이브러리가 꽤 오래된 것이다 보니, 32비트 라이브러리입니다.

      결국 32비트 환경으로 컴파일 시켜야하는데, 방법 없을까요?

      혹시나 싶어 x64 환경 설정에 32비트 라이브러리랑 OpenCV 3.2.0 환경 변수 넣고 컴파일 하니 충돌 뜨네요...;;

    • 제로프레임 2017.04.07 21:35


      추가 질문 :

      그러고보니, 라즈베리 파이에 설치되는 라즈비안은 32비트 운영체제인데, 어떻게 64비트 라이브러리인 OpevCV 3.2.0이 정상 동작하는 것일까요...

      지금 윈도우에서 동작 안되는 코드가 오히려 라즈비안 상에서 g++ 컴파일을 하니 정상 동작되는군요...

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2017.04.08 08:22 신고


        질문이 좀 헷갈리네요..

        라즈베리파이는 리눅스 운영체제를 사용하고 ARM 시피유을 쓰기땜에 현재 opencv 홈페이지에서 제공하는 빌드된 3.2버전대의 opencv 라이브러리를 사용할 수 없습니다..

        단지 apt-get 명령을 사용하여 설치가능한 2.4 버전대의 opencv 패키지만 제공되고 있습니다. 컴파일해서 3.2버전의 opencv를 설치 하신건가요?

        다음 명령을 라즈베리파이에서 입력해서 설치된 OpenCV 버전을 확인해보세요?
        pkg-config --modversion opencv


        opencv 코드는 사용하는 운영체제나 시퓨유와 상관없이 opencv라이브러만 설치되어 있으면 동일하게 동작합니다..

        64비트 윈도우에서 안된다하시는 코드에서 사용하는 opencv 버전이 다르기 때문인듯 싶네요..

        소스코드에 있는 헤더파일 이름에 opencv2가 없이 아래처럼 되어있지 않나요?
        #include <cv.h>
        #include <highgui.h>

    • 오 감사합니다. 2018.03.28 16:55


      지금까지 visual studio 2013 으로 다른 블로그나 Github같은 사이트에서 안내하는 순서대로 실행을 했는데 항상 오류가 나왔어요. 작성자분 글 보고 "아차 visual studio 버전이 틀리면 안 될려나." 이 생각이 들더라구요. 2015로 다시 깔고 실행을 하니 짠! 하고 연결한 웹캠이 나타났네요! 감사합니다! 이제 안면인식 작업을 진행 해야 겠습니다.

    • 1234 2019.01.08 00:33


      안녕하세요
      덕분에 환경설정은 깔끔하게 했습니다 !
      그런데 CV_FILLED, CV_WINDOW 등등 정의되어 있지 않다고 뜨는데
      선언을 어떻게 해주어야 쓸수 있나요? 아니면 제가 설정을 조금 잘못한건가요?

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.01.08 09:26 신고


        OpenCV 4.0.0 이상을 설치해서 그런듯합니다. 해당 버전에서 C API가 제거되서 그렇습니다.

        상수 앞에붙은 CV_를 제거하고 해보세요.
        CV_FILLED 대신에 FILLED을 사용하면 됩니다.

Designed by Tistory.