Apple Silicon Macbook에서 Visual Studio Code와 연동하여 OpenCV C++ / Python 개발 환경을 만드는 과정을 설명합니다.
2021. 12. 04 최초작성
2022. 11. 13 최종수정
Python용 OpenCV만 필요한 경우 다음처럼 Python용 OpenCV 패키지를 설치하여 사용할 수 있습니다.
pip install opencv-contrib-python
포스트는 C++용과 Python용을 동시에 설치하는 경우이고 환경 변화에 따라 설치 방법이 변경될 수 있습니다.
1. 다음 포스트에 나온대로 Xcode를 설치합니다.
Apple Silicon Macbook에 Xcode 설치하기
https://webnautes.tistory.com/2024
2. Command + Space를 누른 후, terminal을 입력후 엔터를 눌러 터미널을 실행합니다.
3. homebrew를 설치합니다.
% ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Next steps 메시지 다음에 나오는 다음 두 명령어를 복사하여 실행합니다. brew 경로를 환경변수 PATH에 추가해주어 아무데서나 brew 명령어를 사용할 수 있게 해줍니다.
% echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> /Users/webnautes/.zprofile
% eval "$(/opt/homebrew/bin/brew shellenv)"
저장소를 업데이트합니다.
% brew update
4. brew를 사용하여 opencv를 설치합니다.
% brew install opencv
글작성한 시점에(2021/12/3) OpenCV 4.5.3이 설치되었습니다.
5. OpenCV가 설치되는 과정에서 OpenCV 3.9가 설치되었지만 이미 설치된 Python 3.8.2가 있는 상태라 문제였습니다.
현재 python3 명령으로 실행시 Python 3.8.2가 실행됩니다.
그래서 다음처럼 python 3.9를 사용하도록 재설정했습니다.
webnautes@webnautesui-MacBookAir ~ % hash -r
webnautes@webnautesui-MacBookAir ~ % which python3
/opt/homebrew/bin/python3
이제 python3를 실행하여 OpenCV의 Python 모듈인 cv2를 임포트해서 버전을 확인해봅니다.
webnautes@webnautesui-MacBookAir ~ % python3
Python 3.9.9 (main, Nov 21 2021, 03:16:13)
[Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'4.5.3'
>>> quit()
webnautes@webnautesui-MacBookAir ~ %
6. OpenCV 컴파일 옵션이 사용가능한지 확인합니다.
webnautes@webnautesui-MacBookAir ~ % pkg-config opencv4 --libs --cflags
-I/opt/homebrew/opt/opencv/include/opencv4 -L/opt/homebrew/opt/opencv/lib -lopencv_gapi -lopencv_stitching -lopencv_alphamat -lopencv_aruco -lopencv_barcode -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -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_highgui -lopencv_datasets -lopencv_text -lopencv_plot -lopencv_videostab -lopencv_videoio -lopencv_viz -lopencv_wechat_qrcode -lopencv_xfeatures2d -lopencv_shape -lopencv_ml -lopencv_ximgproc -lopencv_video -lopencv_dnn -lopencv_xobjdetect -lopencv_objdetect -lopencv_calib3d -lopencv_imgcodecs -lopencv_features2d -lopencv_flann -lopencv_xphoto -lopencv_photo -lopencv_imgproc -lopencv_core
5. Visual Studio Code를 설치합니다.
% brew install --cask visual-studio-code
6. 디렉토리를 하나 생성하여 Visual Studio Code를 실행합니다.
webnautes@webnautesui-MacBookAir ~ % mkdir opencv_work
webnautes@webnautesui-MacBookAir ~ % cd opencv_work
webnautes@webnautesui-MacBookAir opencv_work % code .
7. 확장자가 py인 파일을 하나 생성하여 다음 Python 코드를 복사해줍니다.
처음 파이썬 코드파일을 Visual Studo Code에서 사용하는 거면 Python 확장을 설치할지 물어봅니다.
설치를 완료한후 진행해야 합니다.
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
raise IOError("Cannot open webcam")
while True:
ret, frame = cap.read()
cv2.imshow('webcam', frame)
c = cv2.waitKey(1)
if c == 27:
break
cap.release()
cv2.destroyAllWindows()
마우스 우클릭하여 메뉴에서 Run Python File in Terminal을 선택합니다.
처음 실행시에 웹캠 접근을 허용할지 물어봅니다.
허용해준 후, 다시 실행하면 웹캠 영상이 새로운 창에 보여집니다.
ESC 키를 누르면 창이 닫힙니다.
8. 확장자가 cpp인 파일을 하나 생성하여 다음 C++ 코드를 붙여넣습니다.
처음 C++ 코드파일을 Visual Studo Code에서 사용하는 거면 C++ 확장을 설치할지 물어봅니다.
설치를 완료한후 진행해야 합니다.
메뉴에서 Terminal > Configure Default Build Task를 선택합니다.
메뉴에서 g++ 활성 파일 빌드를 선택합니다.
g++-11 활성 파일 빌드를 선택하여 진행하면 다음과 같은 에러가 발생하니 주의하세요.
ld: warning: dylib (/opt/homebrew/Cellar/gcc/11.2.0_3/lib/gcc/11/libstdc++.dylib) was built for newer macOS version (11.5) than being linked (11.3)
Undefined symbols for architecture arm64:
"__ZN2cv6imshowERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_11_InputArrayE", referenced from:
_main in ccbFMnHB.o
ld: symbol(s) not found for architecture arm64
새로 생성된 tasks.json파일에 pkg-config 로 시작하는 줄을 추가한 후, Command + S를 눌러 파일을 저장합니다.
맨앞에 있는 콤마를 빼먹지 않도록 주의하세요.
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
, "`pkg-config", "--libs", "--cflags", "opencv4`", "-std=c++11"
],
cpp 코드를 열어놓고 Command + Shift + B를 누르면 실행파일이 생성됩니다.
여기에선 webcam 파일이 생성되었습니다.
터미널에서 생성된 실행파일을 다음처럼 실행하면 웹캠 영상이 새로운 창에 보여집니다.
ESC키를 누르면 창이 닫힙니다.
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!