python version 3.8.8
개발환경 관리 miniforge
homebrew로 wget, cmake 설치
brew install wget
brew install cmake
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 커맨드로 컴파일 (경로를 꼭 수정하기)
arch -arm63 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/<유저네임>/opencv_contrib-4.5.0/modules \
-D PYTHON3_EXECUTABLE=/Users/yunsoowoo/miniforge3/envs/<개발환경>/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 ..
저기 두 줄 수정 안 하고 막 붙여넣기 했다가 계속 이 오류로 고생했다..
-- Configuring incomplete, errors occurred!
See also "/Users/yunsoowoo/opencv-4.5.0/build/CMakeFiles/CMakeOutput.log".
See also "/Users/yunsoowoo/opencv-4.5.0/build/CMakeFiles/CMakeError.log".
build 폴더를 확인해보면
3rdparty data
CMakeCache.txt doc
CMakeDownloadLog.txt include
CMakeFiles modules
CMakeVars.txt opencv2
CPackConfig.cmake opencv_data_config.hpp
CPackSourceConfig.cmake opencv_lapack.h
OpenCVConfig-version.cmake opencv_python_tests.cfg
OpenCVConfig.cmake opencv_tests_config.hpp
apps python_loader
carotene samples
cmake_uninstall.cmake setup_vars.sh
configured test-reports
custom_hal.hpp tmp
cv_cpu_config.h unix-install
cvconfig.h version_string.tmp
여기서 CMakeCache.txt 를 삭제..
rm -rf CMackeCache.txt
같은 오류 발생.
gcc를 upgrade 하라는 조언을 보고 다음과 같이 시도했으나 upgrade할 게 없다네
brew upgrade gcc
위에는 뭐가 문젠지 모르고 고생한 부분이고, ... 저 경로만 수정해주니 바로 됐다
('바로'라기엔 몇 분 걸렸지만 ..)
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/yunsoowoo/opencv-4.5.0/build
자 그 다음 ..
make -j8
여기서도 시간이 꽤 걸린다
sudo make install
아래부터는 경로를 꼭 신경써서 수정하여야 한다
그 다음 아래 명령어로 출력되는 내용을 확인해야 하는데.. 아무것도 안 찍히는 것 같다. 식은땀이 난다..
(cd /usr/local/lib/python3.8/site-packages/cv2/python-3.8 들어가서 ls 찍어보니까 cv2.cpython-38-darwin.so 이게 있길래 ..)
~
mdfind cv2.python
일단은 그대로 해본다
cd /Users/yunsoowoo/miniforge3/envs/prj_final/lib/python3.8/site-packages
ln -s /usr/local/lib/python3.8/site-packages/cv2/python-3.8/cv2.cpython-38-darwin.so cv2.so
안 됐나보네... 뭐가 문제야 ㅡㅡ (import cv2나 from cv2 import * 둘다 안 됨)
ImportError: dlopen(/Users/yunsoowoo/.local/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so, 2): Library not loaded: /opt/homebrew/opt/ffmpeg/lib/libavcodec.58.dylib
Referenced from: /Users/yunsoowoo/.local/lib/python3.8/site-packages/cv2/cv2.cpython-38-darwin.so
Reason: image not found
'컴퓨터 > python' 카테고리의 다른 글
emoji crawling (0) | 2022.08.12 |
---|---|
파이썬의 비동기 처리 (0) | 2022.05.23 |
[python] 문자열 타입으로 된 리스트를 리스트 타입으로 바꾸기 (0) | 2021.08.07 |
[파이썬] pyinstaller exe파일 에러 (0) | 2021.04.14 |
[Python] 객체와 return (0) | 2021.03.09 |