Mac 환경에서 OpenCV를 makefile로 컴파일하는 방법
배경
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 있으면 명령 하나이므로 편합니다.
도움이 될 것 같은 링크
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에서 움직인 메모
Reference
이 문제에 관하여(Mac 환경에서 OpenCV를 makefile로 컴파일하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/satsukiya/items/02892cde8ec408ada423텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)