본문 바로가기

공학/Mac OSX

Xcode에 OpenCV 설치하기

D G R L D


Mac OSX 에 OpenCV 설치

 그리고 Xcode C++ 에서 이용하기


예전에 OpenCV 를 설치하기 위해선 

OpenCV 공홈에서 다운받은 파일을 Cmake를 이용해서 Makefile을 만든 뒤,

이 makefile을 build 한 뒤에야 사용할 수 있었습니다.

무지하게 귀찮은 과정이 아닐 수 없습니다.


하지만 Homebrew를 이용하면 정말 편리하고 빠르게 설치할 수 있습니다.

Homebrew란 OSX 에 필요한 패키지들을 간편하게 설치할 수 있도록 해줍니다.

Homebrew를 이용하면

1. Homebrew를 통해 OpenCV 패키지를 설치한 뒤,

2. Xcode에 OpenCV 라이브러리를 링크하기만 하면 됩니다.






1. Homebrew 및 OpenCV 설치


만약 Homebrew를 설치한 적이 없다면 설치해야 합니다. 설치한 적이 있다면 스킵하고 2번으로 넘어가세요.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

터미널을 열고 위와 같이 입력합니다. 

엔터키를 눌러 계속 진행합니다.


비밀번호를 입력하는 항이 나옵니다.

맥에 로그인할 때 쓰이는 비밀번호를 입력하면 됩니다.

비밀번호는 입력해도 터미널상에는 글자로 나타나지 않습니다.

다 입력했으면 엔터키를 누릅니다.



2. OpenCV 설치하기


Homebrew를 이용해서 OpenCV 패키지를 설치하기 위해선 다음과 같이 입력하면 됩니다.

brew install opencv

이 짧은 명령어로 OpenCV가 설치됩니다.


brew install 이라는 명령어롤 통해 다른 패키지도 설치할 수 있습니다.

만약 OpenCV 패키지를 이미 설치했었다면 

이렇게, 이미 이전 버젼이 설치되어 있다고 에러메시지를 던집니다.

에러에서 보이듯 새로운 버전을 설치하기 위해선 brew install 뒤에 update를 붙어야 합니다.


3. pkg-config 설치 & 링커 플래그 추출


설치한 OpenCV를 Xcode에서 이용하려면 링커 플래그(Linker Flag) 를 걸어야 합니다.

링커 플래그를 건다는 것은 컴파일러한테 해당 라이브러리를 참조하라고 지시하는 겁니다.

링커 플래그를 걸지 않고 빌드하면, 컴파일러가 OpenCV가 뭔지 모르기 때문에 에러가 납니다.

바로 이 pkg-config 가 OpenCV의 링커 플래그를 알려주는 열쇠입니다.

아래 명령어를 입력해서 pkg-config를 설치합니다.


brew install pkg-config


자 이제 설치했으니, 링커 플래그를 알아내봅시다.

링커 플래그를 알기 위해선 아래 명령어를 입력합니다.

pkg-config --cflags --libs opencv

그럼 다음과 같은 내용이 터미널에 나옵니다.

얘내들이 바로 OpenCV의 링커 플래그입니다.

이제 Xcode 프로젝트를 만들고, OpenCV를 참조시키면 모든 과정이 끝납니다.

터미널 창을 닫지 말고, Xcode를 실행시킵니다.


4. Xcode 프로젝트 생성 및 OpenCV 참조


Xcode 프로젝트를 만듭니다. C++ 에서 이용할 것이기 때문에

Command Line Tool, Language 는 Xcode를 선택합니다.

프로젝트가 빌드되면 Build Setting 에 들어갑니다.


프로젝트를 빌드할 때 사용자가 할 수 있는 다양한 설정이 나옵니다.

오른쪽 위에 있는 검색란에 먼저 header search 를 입력하면

아래 그림과 같이 Header Search Paths 라는 항목이 보입니다.


더블클릭한 뒤 + 마크를 누르고 아래와 같이 입력한 뒤 엔터를 누릅니다.

/usr/local/include


다시 검색창에 library search 를 입력하면

다음과 같이 Library Search Paths 가 나옵니다.


Header Search Paths 에 했던 것처럼

아래와 같이 입력한 뒤 엔터키를 누릅니다.

/usr/local/lib


이제 링커 플래그를 걸면 모든 설정은 끝이 납니다.

다시 검색창에 linker flag 를 검색합니다.



터미널에 출력되었던 OpenCV의 링커 플래그를 복사해서

+ 칸을 누르고 전부 붙여넣기 합니다.


엔터키를 누른 뒤 다시 확인해 보면 다음과 같이

모든 링크가 자동으로 잘 정돈된 것이 보입니다.


이제 모든 설정이 완료되었습니다.

문제없이 설치되었는지 확인하기 위해 OpenCV 버젼을 출력해봅시다.

OpenCV 버젼을 출력하기 위해선 다음과 같이 입력합니다.


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

using namespace std;
using namespace cv;

int main(int argc, const char * argv[]) {
    
    cout << "OpenCV version : " << CV_VERSION << endl;
    cout << "Major version : " << CV_MAJOR_VERSION << endl;
    cout << "Minor version : " << CV_MINOR_VERSION << endl;
    cout << "Subminor version : " << CV_SUBMINOR_VERSION << endl;
    
    return 0;
}

 

한번 프로그램을 실행시켜 봅니다.

위와 유사하게 나온다면 성공입니다.





주의! : 현재 출시된 버젼은 openCV 4로, pkg-config 명령어로 링커 플래그를 알아올 때

pkg-config --cflags --libs opencv4
로 입력해야 제대로 된 링커플래그가 나옵니다.