X code 에서 Open CV 환경 만들기.
영상 처리 공부하다가 Open CV 실습을 해야해서 환경 셋팅을 했다.
Max os 환경에 Open CV 설치해서 X code 에서 c++ 로 Open CV 다루기.
1. Homebrew 통해서 Open CV 패키지 설치.
2. Xcode에 Open CV 라이브러리 링크.
Homebrew 설치
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