메뉴 건너뛰기

개발도구


맥의 Xcode에서 OpenCV사용을 위한 설정 방법입니다.


정확하게 동작하는 가장 최신 정보가 없더군요. 그래서 또 하나의 스냅샷을 기록해 둡니다. 


0. HomeBrew 를 설치합니다. 설치방법은 https://brew.sh/index_ko 링크를 참고하시길 ... (Install HomeBrew - https://brew.sh/)


1. OpenCV를 Brew를 이용해 설치합니다.

brew install opencv


2. pkg-config를 Brew를 이용해 설치합니다.

brew install pkg-config


3. opencv 가 설치되어 있는 경로로 이동하여 아래와 같이 명령을 수행합니다.
여기서 4.1.0_2는 설치되어 있는 opencv의 버전입니다.  ls하셔서 보여지는 버전을 입력하면 됩니다.

$ cd /usr/local/Cellar/opencv
$ ls
4.1.0_2
$ pkg-config --cflags --libs ./4.1.0_2/lib/pkgconfig/opencv4.pc
-I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4 -L/usr/local/Cellar/opencv/4.1.0_2/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -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_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core


4. "-I/usr ...."처럼 출력된 내용을 복사하거나 터미널 창을 열어두고 해당 내용을 유지합니다. (Copy the outputs and Keep it)


5. Xcode 를 실행해서 Command Line Tool 프로젝트를 생성합니다. 언어는 C++ 입니다. (Launch Xcode and create 'Command Line Tool project. Set language to 'C++')


6. Build Setting 에서 "linker flag"를 검색하면 나타나는 Other Linker Flags 라는 항목이 나타납니다. 터미널 창에 표시하고 있는 "-I/usr ...."내용을 이곳에 복사해서 붙여넣습니다. (Set 'Other Linker Flags' to the outputs you kept. in 'Build Setting')

Debug : -I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4 -L/usr/local/Cellar/opencv/4.1.0_2/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -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_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core

Release: -I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4/opencv -I/usr/local/Cellar/opencv/4.1.0_2/include/opencv4 -L/usr/local/Cellar/opencv/4.1.0_2/lib -lopencv_gapi -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_quality -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_video -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core


7. "header search"를 검색하면 나타나는 Header Search Paths 라는 항목을 아래와 같이 설정합니다. (Set 'Header Search Paths' to the following settings in 'Build Setting')

Debug > /usr/local/Cellar/opencv/4.1.0_2/include
      > /usr/local/Cellar/opencv/4.1.0_2/include/opencv4

Release > /usr/local/Cellar/opencv/4.1.0_2/include
        > /usr/local/Cellar/opencv/4.1.0_2/include/opencv4


8. "library search"를 검색하면 나타나는 Library Search Paths 라는 항목을 아래와 같이 설정합니다. (Set 'Library Search Paths' to the following settings in 'Build Setting')

Debug > /usr/local/Cellar/opencv/4.1.0_2/lib

Release > /usr/local/Cellar/opencv/4.1.0_2/lib


9. 자, 이제 설정은 끝났습니다. 테스트를 위해 "Face Detection" 예제 코드를 실행해 보겠습니다. 아래 경로의 코드를 복사해서 "main.cpp"에 붙입니다.

(Copy and paste the code at the following URL into the 'main.cpp' file.)

https://github.com/opencv/opencv/blob/master/samples/cpp/facedetect.cpp


10. 이 예제에서 사용하는 xml 파일들의 경로를 "Edit scheme ..." > "Run" > "Arguements Passed On Launch" 에 아래와 같이 설정합니다. 건너뛰어도 무관합니다.

(You can skip this sequence)

--cascade="~/Downloads/data/haarcascades/haarcascade_frontalface_alt.xml" --nested-cascade="~/Downloads/data/haarcascades/haarcascade_eye_tree_eyeglasses.xml"


11. 빌드합니다. 빌드 후 생성되는 실행파일을 적절한 경로(이 예제에서는 Downloads)에 복사합니다. (Build the code and copy the executable to 'Downloads' folder)


12. 그리고 아래 경로에 있는 "data"폴더를 좀전의 "적절한 경로(이 예제에서는 Downloads)"에 복사합니다. (Copy and paste the folder at the following URL into 'Downloads' folder)

https://github.com/opencv/opencv/tree/master


13. 실행파일을 터미널에서 실행해 봅니다. 이상없이 실행된다면,  자신의 얼굴이 감지되는 모습을 확인할 수 있습니다. (Launch the executable file)


*.11 ~ 13번의 과정이 좀 의아할 겁니다. 걍, XCode에서 실행하면 될텐데 왜 이렇게 하는지 말입니다.

XCode에서 실행을 해 보면 아시겠지만, 그러면 아래와 같은 오류가 발생합니다.

OpenCV: not authorized to capture video (status 0), requesting...
OpenCV: camera failed to properly initialize!
Capture from camera #0 didn't work

즉, 권한문제가 발생합니다. 이의 해결을 위한 시원한 답을 아직 찾지 못했습니다. 그나마 찾은 방법이 터미널에서 실행파일을 실행하고 XCode에서 해당 실행파일의 프로세스를 Attach 해서 디버깅을 진행하는 것입니다. 제가 무언가를 놓치고 있는 것인지, 정말로 현재는 이 방법밖에 없는지 의문입니다. ㅠㅠ


후에, 관련해서 더 무언가를 알게되면 정리하도록 하겠습니다. 혹, 알고 계신다면 이곳에 남겨 주신다면 더욱 좋을 것 같습니다^_^ 





번호 제목 글쓴이 날짜 조회 수
공지 [TIP] Jedis로 원격지 Redis접속에 실패할때 파이팅건맨 2017.09.27 2806
공지 [TIP] MySQL - 2개이상의 필드 정보를 이용하여 중복 레코드 삭제하기 파이팅건맨 2017.09.27 2382
공지 [TIP] Command Line 에서 INF 설치 방법 파이팅건맨 2010.02.05 2325
» [TIP] 맥의 XCode에서 OpenCV를 사용하기 위한 설정 방법 (The way how to set up your environment to use OpenCV with Xcode on your Mac.) 파이팅건맨 2019.06.22 229
70 [TIP] npm 으로 모듈 설치할때 "xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance" 오류 발생시... 파이팅건맨 2019.01.22 641
69 [TIP] 파이선에서 C 코드 호출하기 (How to call C function from Python) [1] 파이팅건맨 2018.08.14 737
68 [TIP] Android Studio 에서 빌드는 되는데 라이브러리를 찾지 못했다는 오류가 표시될 때 [4] 파이팅건맨 2018.06.22 1390
67 [TIP] Jedis로 원격지 Redis접속에 실패할때 파이팅건맨 2017.09.27 2806
66 [TIP] MySQL - 2개이상의 필드 정보를 이용하여 중복 레코드 삭제하기 파이팅건맨 2017.09.27 2382
65 [TIP] MySQL 서버로 로컬PC에 있는 대용량 데이터 올리기 파이팅건맨 2017.09.20 1456
64 [TIP] 스프링 웹서비스에서 SSL을 위한 인증서 설정 방법 파이팅건맨 2017.09.08 654
63 [TIP] TOMCAT-JSP 사용시 get 으로 전송하는 한글이 깨어질때 파이팅건맨 2017.08.04 347
62 [TIP] gcov 사용시 stamp mismatch with graph file 오류 파이팅건맨 2017.08.03 354
61 [TIP] SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible ... only_full_group_by 오류 발생시 파이팅건맨 2017.08.02 556
60 [TIP] 앱 실행시 관리자 권한을 얻도록 Visual Studio에서 설정하기 파이팅건맨 2017.01.22 2221
59 [TIP] InnoSetup에서 방화벽 정보 설정하기 파이팅건맨 2017.01.22 467
58 [LINK] GUI Mockup 작업을 간편하게! 파이팅건맨 2012.04.30 1383
57 [TIP] Excel 에서 특정 문자열이 포함된 셀수 구하기 파이팅건맨 2010.08.19 1731
56 [TIP] Command Line 에서 INF 설치 방법 파이팅건맨 2010.02.05 2325
55 [LINK] 간편히 사용가능한 Virtual Serial Port 파이팅건맨 2009.05.24 759
54 [TIP] 윈도우에서 NFS 서버 돌리기 파이팅건맨 2009.02.16 1554
53 [LINK] distcc로 컴파일 시간 줄이기 (번역) 파이팅건맨 2009.02.04 1242
52 [TIP] 윈도우 시작시 내문서가 항상 열려 있을때... 파이팅건맨 2008.12.07 1228
위로