Mac 환경에서 OpenCV를 makefile로 컴파일하는 방법

6867 단어 C++OpenCVMakefile

배경



Windows 환경에서 OpenCV 스크립트를 작성했을 때는 VisualStudio이었으므로 설정에서 include 폴더와 lib 폴더의 각각의 경로와 필요한 lib 파일을 설정하면 빌드 할 수 있습니다.
이 5년 정도는 mac에서의 개발이 많았기 때문에, OpenCV를 곧 사용하고 싶을 때에 Python을 사용해 pip install opencv-python 로 패키지를 인스톨하면 사용하고 있습니다.

그래서 C++에서 mac에서 사용하려고 생각했을 때 어떻게 다운로드하고 설정하면 좋은지 잘 모르기 때문에 정리해 보았습니다.

방법



Homebrew를 사용하여 openCV 설치


brew install opencv
/usr/local/Cellar/opencv/ 아래에 다운로드됩니다. include 폴더 경로는 /usr/local/Cellar/opencv/4.1.1_2/include/opencv4/ , lib 폴더 경로는 /usr/local/Cellar/opencv/4.1.1_2/lib/ 로 각각 헤더 파일과 lib 파일이 포함되어 있습니다.

표시에 사용되는 이미지




귤 성인입니다.

코드 작성


#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui.hpp>

int main(int argc, const char* argv[]) {

     //モノクロ画像で格納
    cv::Mat image = cv::imread("./mikan.jpg" , 0);
    if (image.empty()) {
        std::cout << "read error.\n";
        return -1;
    }


    while (true){
        const int key = cv::waitKey(1);
                //[q] を押すと終了 
        if (key == 'q'){
            break;
        }

        cv::namedWindow("Image", cv::WINDOW_AUTOSIZE);
        cv::imshow("Image", image);
    }

    cv::destroyAllWindows();

   return 0;
}

makefile 만들기



커멘드로 패스의 설정을 할 필요가 있으므로 아래의 커멘드를 쳐 출력 파일을 작성할 수 있습니다.
c++ main.cpp -o main -I/usr/local/Cellar/opencv/4.1.1_2/include/opencv4/ \ 
-std=c++11 \
-L/usr/local/Cellar/opencv/4.1.1_2/lib/ \
-lopencv_core -lopencv_highgui -lopencv_imgcodecs

매번이 명령을 치고 디버깅하는 것은 상당히 번거롭습니다. 여기에 opencv 이외의 외부 파일을 추가하려는 경우 이보다 길어집니다. 길어지면 빌드가 어디에서 오류가 발생하는지 알 수 없습니다.
그래서 makefile을 만들어 매크로화합니다.
CXX = c++
CXXFLAGS =  -I/usr/local/Cellar/opencv/4.1.1_2/include/opencv4/
LDFLAGS = -L/usr/local/Cellar/opencv/4.1.1_2/lib/
LDLIBS =  -lopencv_core -lopencv_highgui -lopencv_imgcodecs
CXXVERSION = -std=c++11

main: main.cpp
    $(CXX) $< -o $@ $(CXXFLAGS) $(CXXVERSION) $(LDFLAGS) $(LDLIBS)

clean :
    rm main
CXXVERSION = -std=c++11 와 있습니다만, 최신의 openCV4 계에서는 명시할 필요가 있습니다. c++의 구문이 c++11 , c++14 , c++17 로 버전 업하고 있고 openCV의 구조가 c++11 이상의 구문으로 쓰여져 있는 것 같습니다. 따라서 지정하지 않으면 오류가 발생합니다.

makefile이 가능하면 make 명령만으로 출력 파일을 만들 수 있습니다.
make
./main

결과





키보드 [q]를 누르면 닫힙니다.



makefile 있으면 명령 하나이므로 편합니다.

도움이 될 것 같은 링크



  • IDE를 사용하지 않고 OpenCV를 사용하여 C ++ 소스 파일 빌드
  • 타이틀이 그렇습니다만 쓰는 방법은 별로 참고로 하고 있지 않습니다.


  • waifu2x를 OSX에서 움직인 메모
  • 소재는 OpenCV는 아니지만 여기가 참고가 됩니다.

  • 좋은 웹페이지 즐겨찾기