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
복사했습니다!