Computer Vision

X code 에서 Open CV 환경 만들기.

kka_nna 2020. 7. 25. 02:52

영상 처리 공부하다가 Open CV 실습을 해야해서 환경 셋팅을 했다. 

 

Max os 환경에 Open CV 설치해서 X code 에서 c++ 로 Open CV 다루기. 

 

1. Homebrew 통해서 Open CV 패키지 설치. 

2. Xcode에 Open CV 라이브러리 링크. 


Homebrew 설치

brew.sh/index_ko 

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

사이트에 있는 스크립트를 복사해서 터미널에서 실행시킨다. 

 

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Password 입력하고 기다리면 설치가 된다. 

 

 

Homebrew 이용해서 Open CV 설치

터미널에

brew install opencv 

라고 입력하고 엔터. 

시간이 꽤 걸린다. 

 

 

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

brew install pkg-config

설치 후, 링커 플래그 추출

pkg-cofig --cflags --libs opencv4

opencv 뒤에 숫자는 설치되는 버전별로 다르다. 

나는 최근에 설치했으므로 가장 최근 버전인 4를 적었다. 

이렇게 주르륵 링크 플래그들이 나온다. 

 

 

X code에서 Open CV 참조 

프로젝트 생성할 때 마다 Open CV 를 참조시켜 줘야한다. 

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

 

(1) " Header Search Path " 검색 후 

오른쪽 빈칸에 더블클릭하여 

/usr/local/include
/usr/local/include/opencv4

붙여넣기 하고 엔터. 

 

(2) " Library Search Path" 검색 후 

마찬가지로 오른쪽 빈칸에 

/usr/local/lib

붙여넣기 후 엔터 

 

(3) "Other Linker Flags" 검색 후

오른 쪽 빈칸에 

-I/usr/local/Cellar/opencv/4.3.0_5/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.3.0_5/include/opencv4 -L/usr/local/Cellar/opencv/4.3.0_5/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_highgui -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

터미널에서 추출한 플래그들을 붙여넣기 후 엔터. 

 

 

Open CV C++ 로 사용해 보기. 

위의 과정을 다 거친 후, Open CV를 사용하기 위해 헤더에

#include <opencv2/opencv.hpp>
using namespace cv;

 입력해주면 문제없이 사용할 수 있다.

 


간단하게 이미지를 불러오는 코드 

#include <iostream>

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

using namespace std;
using namespace cv;

int main() {
    
    Mat origin, gray;
    origin = imread("colosseum.jpg", IMREAD_COLOR);
    gray = imread("colosseum.jpg", IMREAD_GRAYSCALE);
    if(origin.empty()){
        cout<<"Could not open or find the Image"<<endl;
        return -1;
    }
    imshow("Original", origin);
    imshow("Gray", gray);
    
    waitKey(0);
    
    return 0;
}

(+) 이미지를 사용하기 위해서 이미지를 가지고 있는 디렉토리를 연결 시켜줘야한다. 

Product - Scheme - Edit Schem ( cmd + < )

Working Directory 에서 Use custom working directory를 체크하고 해당 디렉토리를 설정해준다. 

 

코드 실행 결과

 


(+) 

Open CV는 몇몇 라이브러리를 포함하는 패키지 형태의 모듈 구조를 가진다. 

대표적으로 Core, imgproc, video, calib3d, feature2d, objdetect, highgui, gpu 가 있다. 

  • Core : 기본적인 데이터 구조를 가진다. 예를 들어 영상 및 행렬의 값들을 저장할 수 있는 배열 mat을 가지고 있고, 그와 관련되어 기본적인 함수를 제공한다. (opencv.hpp 에 다 포함되는 것 같다. )
  • imgproc : 선형, 비선형 영상 필터링을 포함한 영상 처리 모듈이다. 기하적인 영상의 변형, 컬러 공간 변환, 히스토그래뫄 관련된 처리 등을 할 수 있는 기본적인 영상 처리 함수를 제공한다.
  • video : 비디오 분석 모듈로써 움직임 추정, 전 후경 분리, 물체 추적 알고리즘 등을 가지고 있다. 
  • calib3d : 기본적인 멀티 뷰 기하학 알고리즘과 단일 및 스테레오 카메라 calibration, 물체 동착 추정, 스테레오 관련 알고리즘, 3D 구성요소를 제공하는 모듈이다. 
  • feature2d : SIFT, SURF, MSER 등과 같은 영상의 특징점 탐지 기능, 그것의 기술자와 각 특징의 매칭 등과 같이 영상의 특징 추출과 관련된 기능을 가진 모듈이다. 
  • objdetect : 미리 정의된 종류(얼굴, 눈, 사람, 자동차)를 구별하는 물체 탐지와 고나련된 모듈이다. 
  • highgui : 비디오 캡처, 영상 및 비디오 코덱등을 제공하여 간단한 UI을 제공하는 모듈이다. 
  • gpu : 여러 OpenCV 모듈을 GPU를 사용해서 알고리즘을 고속화 시키는 모듈이다. 

더보기

참고한 블로그 dgrld.tistory.com/34