by Seoyoung Kim

Categories

Tags

cmake를 이용하는 방법과 homebrew를 이용하는 방법 두 가지가 있는데 homebrew가 오래걸리긴 하지만 쉬워서 homebrew를 이용했다.

  1. install opencv by brew

     ~$ brew install opencv3
    

    opencv3을 입력해서 설치했지만 opencv4가 설치되었다.

  2. set path

     ~$ export PATH="/usr/local/opt/opencv@4/bin:$PATH"
     ~$ export LDFLAGS="-L/usr/local/opt/opencv@4/lib"
     ~$ export CPPFLAGS="-I/usr/local/opt/opencv@4/include"
     ~$ export PKG_CONFIG_PATH="/usr/local/opt/opencv@4/lib/pkgconfig"
    

    위를 입력해서 path를 설정해주면 된다.

  3. check

     ~$ pkg-config --modversion opencv4
    

    위를 입력했을 때 version이 나오면 설치가 완료된 것이다.

    이런 결과가 나오면 설치 성공!

    +) 경로 설정하고 바로 적용이 안돼서 확인 했을 때 버전이 안 나올 수 있다. 그런 경우엔 아래 내용을 터미널에 입력해보자.

     ~$ source ~/.zshrc
    

    zsh가 아니라 bash를 사용한다면 ~/.bash_profile을 입력하면 될.. 것이다. 아마도….

  4. set environment in vscode 이제 vscode의 json파일들을 변경해서 vscode에서 opencv를 사용할 수 있게 해보자.

    vscode는 파일 단위로 관리하므로 새로운 폴더을 만들어서 opencv를 쓰는 일종의 프로젝트..?를 만들었다. 그 폴더 안에 .vscode라는 폴더의 json 파일들을 수정했다.

    .vscode/c_cpp_properties.json

     {
         "configurations": [
             {
                 "name": "Mac",
                 "includePath": [
                     "${workspaceFolder}/**",
                     "/usr/bin/clang",
                     "/usr/bin/g++",
                     "/usr/local/Cellar/opencv/4.3.0_3/include/**"
                 ],
                 "defines": [],
                 "macFrameworkPath": [
                     "/System/Library/Frameworks",
                     "/Library/Frameworks",
                     "${applications ~ framework path}"
                 ],
                 "intelliSenseMode": "clang-x64"
             }
         ],
         "version": 4
     }
    

    꼭 이 값을 그대로 넣을 필요는 없고, includePath

    “/usr/local/Cellar/opencv/4.3.0_3/include/**”

    와 같이 opencv include 폴더를 경로만 잘 추가하면 된다.(터미널에서 이 경로가 실제로 존재하는지 확인하는 것을 추천한다.)

    .vscode/c_cpp_properties.json

     {
         "version": "2.0.0",
         "runner": "terminal",
         "type": "shell",
         "echoCommand": true,
         "presentation": {
             "reveal": "always"
         },
         "tasks": [
             {
                 "label": "save and compile for C++",
                 "command": "g++",
                 "args": [
                     "${file}",
                     "-std=c++11",
                     "-g",
                     "-o",
                     "${fileDirname}/${fileBasenameNoExtension}",
                     "`pkg-config",
                     "--libs",
                     "--cflags",
                     "opencv4`"
                 ],
                 "group": "build",
                 "problemMatcher": {
                     "fileLocation": [
                         "relative",
                         "${workspaceRoot}"
                     ],
                     "pattern": {
                         "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
                         "file": 1,
                         "line": 2,
                         "column": 3,
                         "severity": 4,
                         "message": 5
                     }
                 }
             }
         ]
     }
    

    여기서도 task안에 args안에

    “`pkg-config”,

    ”–libs”,

    ”–cflags”,

    “opencv4`”

    만 잘 넣으면 된다.

  5. use opencv

     #include <iostream>
     #include <opencv2/opencv.hpp>
    
     int main(){
         cv::Mat img = cv::imread("/path/to/image/image.jpg");
    
         cv::imshow("wow", img);
         cv::waitKey(0);
    
         return 0;
     }
    

    이렇게 이미지를 불러와서 화면에 띄우는 코드를 짤 수 있다. 이런식으로 사용하기만 하면 끝!