M1 Mac에 OpenCV4 (C++/Python3)를 설치하는 방법
5172 단어 C++파이썬MacOpenCVAppleSilicon
운영 환경
1. conda 설치
conda create --name <env_name>
conda activate <env_name>
conda install -y python==3.8.6
2. Numpy 설치
% wget https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha0/tensorflow_macos-0.1alpha0.tar.gz
% tar xvf tensorflow_macos-0.1alpha0.tar.gz
% cd tensorflow_macos/arm64
% pip install --upgrade --no-dependencies --force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl
% cd ~
3. OpenCV를 소스에서 컴파일
% wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
% wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip
% unzip opencv.zip
% unzip opencv_contrib.zip
% cd opencv-4.5.0
% mkdir build && cd build
% cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/Users/<user_name>/Downloads/opencv_contrib-4.5.0/modules \
-D PYTHON3_EXECUTABLE=/Users/<user_name>/miniforge3/envs/dev/bin/python3 \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_FFMPEG=ON ..
% make -j8
% sudo make install
참고로 [1]에서는 아마 파이썬 버전에서 사용하는 것이 상정되어있는 것 같지만, 나는 C++과 VideoCapture도 사용하고 싶었기 때문에 끝에 -D OPENCV_GENERATE_PKGCONFIG=ON \-D WITH_FFMPEG=ON
를 추가했다.
따라서 C++로 컴파일하기 위해 /usr/local/lib/pkgconfig/opencv4.pc
에 대한 경로를 통과합니다.
~/.zshrcexport PKG_CONFIG_PATH==/usr/local/lib/pkgconfig
source ~/.zshrc
4. 동작 확인
% conda activate <envi_name>
% python
>>> import cv2
>>> cv2.__version__
파이썬의 경우 4.5.0이 표시되면 OK.
다음으로 C++.
Object Detection계에서 C++로 움직이는 좋은 샘플이 없는지 GitHub를 물색한 결과, YOLO를 손쉽게 움직일 수 있는 리포지토리[2]를 발견했다(Detection 이외의 태스크도 거의 망라되고 있다).ObjectDetection-YOLO
clone 후 다음을 실행하고 pretraind model을 다운로드 & 컴파일.
% sh getModels.sh
% g++ -std=c++11 object_detection_yolo.cpp `pkg-config --cflags --libs opencv4` -o object_detection_yolo
% ./object_detection_yolo --image=bike.jpg
임의의 이미지로 실행하여 물체 검출되면 OK.
하나 문제가. . .
webcam 입력으로 c++에서 Detection하고, AppleSilicon은 그래라고 하는 것을 하고 싶었지만, opencv를 cmake시에 ffmpeg가 인식되지 않고, VideoCapture를 사용할 수 없다는 문제가 발각. 이 이유는 아마도 내 환경에는 x86_64 환경과 arm64 환경의 두 가지 동거 관계에서 /usr/local/bin/ffmpeg
(x86_64 컴파일(clang-11.0.0))과 /opt/local/bin/ffmpeg
12.0.0))이 있으며, 전자가 참조되어 있기 때문이라고 생각된다. 인식자가 있으면 해결 방법을 코멘트로 가르쳐 주시면 감사하겠습니다.
(2021.02.16 추가)
원인은 예상대로 /usr/local/bin/ffmpeg
가 x86_64 컴파일(clang-11.0.0)이기 때문이었지만, 다소 억지였지만, /usr/local/bin/
때때로 인식되게 되었다.
또한 다양한 카메라 앱을 넣었기 때문에 cap (0)이 SnapCamera가 된 것도 원인이었다.
% ffmpeg -list_devices true -f avfoundation -i dummy
ffmpeg version N-100400-g001bc594d8 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.27)
configuration: --prefix=/opt/local
libavutil 56. 62.100 / 56. 62.100
libavcodec 58.115.102 / 58.115.102
libavformat 58. 65.100 / 58. 65.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7. 93.100 / 7. 93.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
Changed waitThread to realtime priority!
Asked for all format descriptions...
[AVFoundation indev @ 0x11d70c7f0] AVFoundation video devices:
[AVFoundation indev @ 0x11d70c7f0] [0] Snap Camera
[AVFoundation indev @ 0x11d70c7f0] [1] FaceTime HD Camera
[AVFoundation indev @ 0x11d70c7f0] [2] EpocCam
[AVFoundation indev @ 0x11d70c7f0] [3] Capture screen 0
[AVFoundation indev @ 0x11d70c7f0] [4] Capture screen 1
참고
[1] Building and Installing OpenCV 4.5.0 on an M1 Mac
[2] learnopencv/ObjectDetection-YOLO/
[3] OpenCV를 사용하여 C++ 코드 컴파일(CMake, GCC, pkg-config)
[4] OpenCV의 C++ 코드를 Mac에서 make 할 때의 Makefile
Reference
이 문제에 관하여(M1 Mac에 OpenCV4 (C++/Python3)를 설치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuboyoo/items/056f0d78ab28ec3ce37d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
conda create --name <env_name>
conda activate <env_name>
conda install -y python==3.8.6
% wget https://github.com/apple/tensorflow_macos/releases/download/v0.1alpha0/tensorflow_macos-0.1alpha0.tar.gz
% tar xvf tensorflow_macos-0.1alpha0.tar.gz
% cd tensorflow_macos/arm64
% pip install --upgrade --no-dependencies --force numpy-1.18.5-cp38-cp38-macosx_11_0_arm64.whl
% cd ~
3. OpenCV를 소스에서 컴파일
% wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
% wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip
% unzip opencv.zip
% unzip opencv_contrib.zip
% cd opencv-4.5.0
% mkdir build && cd build
% cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/Users/<user_name>/Downloads/opencv_contrib-4.5.0/modules \
-D PYTHON3_EXECUTABLE=/Users/<user_name>/miniforge3/envs/dev/bin/python3 \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_FFMPEG=ON ..
% make -j8
% sudo make install
참고로 [1]에서는 아마 파이썬 버전에서 사용하는 것이 상정되어있는 것 같지만, 나는 C++과 VideoCapture도 사용하고 싶었기 때문에 끝에 -D OPENCV_GENERATE_PKGCONFIG=ON \-D WITH_FFMPEG=ON
를 추가했다.
따라서 C++로 컴파일하기 위해 /usr/local/lib/pkgconfig/opencv4.pc
에 대한 경로를 통과합니다.
~/.zshrcexport PKG_CONFIG_PATH==/usr/local/lib/pkgconfig
source ~/.zshrc
4. 동작 확인
% conda activate <envi_name>
% python
>>> import cv2
>>> cv2.__version__
파이썬의 경우 4.5.0이 표시되면 OK.
다음으로 C++.
Object Detection계에서 C++로 움직이는 좋은 샘플이 없는지 GitHub를 물색한 결과, YOLO를 손쉽게 움직일 수 있는 리포지토리[2]를 발견했다(Detection 이외의 태스크도 거의 망라되고 있다).ObjectDetection-YOLO
clone 후 다음을 실행하고 pretraind model을 다운로드 & 컴파일.
% sh getModels.sh
% g++ -std=c++11 object_detection_yolo.cpp `pkg-config --cflags --libs opencv4` -o object_detection_yolo
% ./object_detection_yolo --image=bike.jpg
임의의 이미지로 실행하여 물체 검출되면 OK.
하나 문제가. . .
webcam 입력으로 c++에서 Detection하고, AppleSilicon은 그래라고 하는 것을 하고 싶었지만, opencv를 cmake시에 ffmpeg가 인식되지 않고, VideoCapture를 사용할 수 없다는 문제가 발각. 이 이유는 아마도 내 환경에는 x86_64 환경과 arm64 환경의 두 가지 동거 관계에서 /usr/local/bin/ffmpeg
(x86_64 컴파일(clang-11.0.0))과 /opt/local/bin/ffmpeg
12.0.0))이 있으며, 전자가 참조되어 있기 때문이라고 생각된다. 인식자가 있으면 해결 방법을 코멘트로 가르쳐 주시면 감사하겠습니다.
(2021.02.16 추가)
원인은 예상대로 /usr/local/bin/ffmpeg
가 x86_64 컴파일(clang-11.0.0)이기 때문이었지만, 다소 억지였지만, /usr/local/bin/
때때로 인식되게 되었다.
또한 다양한 카메라 앱을 넣었기 때문에 cap (0)이 SnapCamera가 된 것도 원인이었다.
% ffmpeg -list_devices true -f avfoundation -i dummy
ffmpeg version N-100400-g001bc594d8 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.27)
configuration: --prefix=/opt/local
libavutil 56. 62.100 / 56. 62.100
libavcodec 58.115.102 / 58.115.102
libavformat 58. 65.100 / 58. 65.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7. 93.100 / 7. 93.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
Changed waitThread to realtime priority!
Asked for all format descriptions...
[AVFoundation indev @ 0x11d70c7f0] AVFoundation video devices:
[AVFoundation indev @ 0x11d70c7f0] [0] Snap Camera
[AVFoundation indev @ 0x11d70c7f0] [1] FaceTime HD Camera
[AVFoundation indev @ 0x11d70c7f0] [2] EpocCam
[AVFoundation indev @ 0x11d70c7f0] [3] Capture screen 0
[AVFoundation indev @ 0x11d70c7f0] [4] Capture screen 1
참고
[1] Building and Installing OpenCV 4.5.0 on an M1 Mac
[2] learnopencv/ObjectDetection-YOLO/
[3] OpenCV를 사용하여 C++ 코드 컴파일(CMake, GCC, pkg-config)
[4] OpenCV의 C++ 코드를 Mac에서 make 할 때의 Makefile
Reference
이 문제에 관하여(M1 Mac에 OpenCV4 (C++/Python3)를 설치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuboyoo/items/056f0d78ab28ec3ce37d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.0.zip
% wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.0.zip
% unzip opencv.zip
% unzip opencv_contrib.zip
% cd opencv-4.5.0
% mkdir build && cd build
% cmake \
-DCMAKE_SYSTEM_PROCESSOR=arm64 \
-DCMAKE_OSX_ARCHITECTURES=arm64 \
-DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/Users/<user_name>/Downloads/opencv_contrib-4.5.0/modules \
-D PYTHON3_EXECUTABLE=/Users/<user_name>/miniforge3/envs/dev/bin/python3 \
-D BUILD_opencv_python2=OFF \
-D BUILD_opencv_python3=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D BUILD_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D WITH_FFMPEG=ON ..
% make -j8
% sudo make install
export PKG_CONFIG_PATH==/usr/local/lib/pkgconfig
source ~/.zshrc
% conda activate <envi_name>
% python
>>> import cv2
>>> cv2.__version__
파이썬의 경우 4.5.0이 표시되면 OK.
다음으로 C++.
Object Detection계에서 C++로 움직이는 좋은 샘플이 없는지 GitHub를 물색한 결과, YOLO를 손쉽게 움직일 수 있는 리포지토리[2]를 발견했다(Detection 이외의 태스크도 거의 망라되고 있다).
ObjectDetection-YOLO
clone 후 다음을 실행하고 pretraind model을 다운로드 & 컴파일.% sh getModels.sh
% g++ -std=c++11 object_detection_yolo.cpp `pkg-config --cflags --libs opencv4` -o object_detection_yolo
% ./object_detection_yolo --image=bike.jpg
임의의 이미지로 실행하여 물체 검출되면 OK.
하나 문제가. . .
webcam 입력으로 c++에서 Detection하고, AppleSilicon은 그래라고 하는 것을 하고 싶었지만, opencv를 cmake시에 ffmpeg가 인식되지 않고, VideoCapture를 사용할 수 없다는 문제가 발각. 이 이유는 아마도 내 환경에는 x86_64 환경과 arm64 환경의 두 가지 동거 관계에서 /usr/local/bin/ffmpeg
(x86_64 컴파일(clang-11.0.0))과 /opt/local/bin/ffmpeg
12.0.0))이 있으며, 전자가 참조되어 있기 때문이라고 생각된다. 인식자가 있으면 해결 방법을 코멘트로 가르쳐 주시면 감사하겠습니다.
(2021.02.16 추가)
원인은 예상대로 /usr/local/bin/ffmpeg
가 x86_64 컴파일(clang-11.0.0)이기 때문이었지만, 다소 억지였지만, /usr/local/bin/
때때로 인식되게 되었다.
또한 다양한 카메라 앱을 넣었기 때문에 cap (0)이 SnapCamera가 된 것도 원인이었다.
% ffmpeg -list_devices true -f avfoundation -i dummy
ffmpeg version N-100400-g001bc594d8 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.27)
configuration: --prefix=/opt/local
libavutil 56. 62.100 / 56. 62.100
libavcodec 58.115.102 / 58.115.102
libavformat 58. 65.100 / 58. 65.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7. 93.100 / 7. 93.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
Changed waitThread to realtime priority!
Asked for all format descriptions...
[AVFoundation indev @ 0x11d70c7f0] AVFoundation video devices:
[AVFoundation indev @ 0x11d70c7f0] [0] Snap Camera
[AVFoundation indev @ 0x11d70c7f0] [1] FaceTime HD Camera
[AVFoundation indev @ 0x11d70c7f0] [2] EpocCam
[AVFoundation indev @ 0x11d70c7f0] [3] Capture screen 0
[AVFoundation indev @ 0x11d70c7f0] [4] Capture screen 1
참고
[1] Building and Installing OpenCV 4.5.0 on an M1 Mac
[2] learnopencv/ObjectDetection-YOLO/
[3] OpenCV를 사용하여 C++ 코드 컴파일(CMake, GCC, pkg-config)
[4] OpenCV의 C++ 코드를 Mac에서 make 할 때의 Makefile
Reference
이 문제에 관하여(M1 Mac에 OpenCV4 (C++/Python3)를 설치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuboyoo/items/056f0d78ab28ec3ce37d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
% ffmpeg -list_devices true -f avfoundation -i dummy
ffmpeg version N-100400-g001bc594d8 Copyright (c) 2000-2020 the FFmpeg developers
built with Apple clang version 12.0.0 (clang-1200.0.32.27)
configuration: --prefix=/opt/local
libavutil 56. 62.100 / 56. 62.100
libavcodec 58.115.102 / 58.115.102
libavformat 58. 65.100 / 58. 65.100
libavdevice 58. 11.103 / 58. 11.103
libavfilter 7. 93.100 / 7. 93.100
libswscale 5. 8.100 / 5. 8.100
libswresample 3. 8.100 / 3. 8.100
Changed waitThread to realtime priority!
Asked for all format descriptions...
[AVFoundation indev @ 0x11d70c7f0] AVFoundation video devices:
[AVFoundation indev @ 0x11d70c7f0] [0] Snap Camera
[AVFoundation indev @ 0x11d70c7f0] [1] FaceTime HD Camera
[AVFoundation indev @ 0x11d70c7f0] [2] EpocCam
[AVFoundation indev @ 0x11d70c7f0] [3] Capture screen 0
[AVFoundation indev @ 0x11d70c7f0] [4] Capture screen 1
[1] Building and Installing OpenCV 4.5.0 on an M1 Mac
[2] learnopencv/ObjectDetection-YOLO/
[3] OpenCV를 사용하여 C++ 코드 컴파일(CMake, GCC, pkg-config)
[4] OpenCV의 C++ 코드를 Mac에서 make 할 때의 Makefile
Reference
이 문제에 관하여(M1 Mac에 OpenCV4 (C++/Python3)를 설치하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuboyoo/items/056f0d78ab28ec3ce37d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)