https://karl27.tistory.com/112
https://velog.io/@parcdaxb1n/C-OpenCV-4.5.5-%EC%84%A4%EC%B9%98%ED%95%98%EA%B8%B0-Ubuntu-20.04
위 두 블로그를 참고하여 OpenCV를 설치를 진행하였다.
CuDNN
먼저 CuDNN을 설치한다.
https://developer.nvidia.com/rdp/cudnn-archive
tar -xvf cudnn-linux-x86_64-8.9.7.29_cuda12-archive.tar.xz
cd cudnn-linux-x86_64-8.9.7.29_cuda12-archive
sudo cp include/cudnn*.h /usr/local/cuda-12.2/include
sudo cp -P lib/libcudnn* /usr/local/cuda-12.2/lib64
sudo chmod a+r /usr/local/cuda-12.2/include/cudnn*.h /usr/local/cuda-12.2/lib64/libcudnn*
참고로, nvcc -V의 결과가 제대로 나오지 않는다면, 환경변수를 설정해주어야 한다.
export PATH=$PATH:/usr/local/cuda/bin
export CUDADIR=/usr/local/cuda
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
OpenCV Dependencies
OpenCV를 설치하기 위해 필요한 패키지들을 설치한다.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y build-essential cmake pkg-config
sudo apt-get install -y libjpeg-dev libtiff5-dev libpng-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libxvidcore-dev libx264-dev libxine2-dev
sudo apt-get install -y libv4l-dev v4l-utils
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y libgtk2.0-dev
sudo apt-get install -y mesa-utils libgl1-mesa-dri libgtkgl2.0-dev libgtkglext1-dev
sudo apt-get install -y libatlas-base-dev gfortran libeigen3-dev
sudo apt-get install -y python3-dev python-numpy python3-numpy
OpenCV
OpenCV를 설치한다. 이때 버전은 4.9.0을 사용하였다.
mkdir opencv && cd opencv
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.9.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.9.0.zip
unzip opencv.zip
unzip opencv_contrib.zip
이후 opencv-4.9.0 폴더로 이동하여 build 폴더를 생성하고, 아래와 같이 cmake를 실행한다.
cd opencv-4.9.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -D BUILD_PACKAGE=OFF -D BUILD_EXAMPLES=OFF -D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.2 -D WITH_CUDA=ON -D WITH_CUBLAS=ON -D WITH_CUFFT=ON -D WITH_NVCUVID=ON -D WITH_IPP=OFF -D WITH_V4L=OFF -D WITH_LIBV4L=ON -D WITH_1394=OFF -D WITH_GTK=ON -D WITH_QT=OFF -D WITH_OPENGL=OFF -D WITH_EIGEN=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER=ON -D BUILD_JAVA=OFF -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D BUILD_NEW_PYTHON_SUPPORT=ON -D OPENCV_SKIP_PYTHON_LOADER=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=ON -D OPENCV_EXTRA_MODULES_PATH=~/Library/opencv/opencv_contrib-4.9.0/modules -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D CUDA_ARCH_BIN=8.9 -D CUDA_ARCH_PTX=8.9 -D CUDNN_LIBRARY=/usr/local/cuda-12.2/lib64/libcudnn.so.8.9.7 -D CUDNN_INCLUDE_DIR=/usr/local/cuda-12.2/include -D PYTHON3_PACKAGES_PATH=/usr/local/lib/python3.8/dist-packages ..
이때 주의사항은 다음과 같다. (위 블로그 인용)
CUDA_TOOLKIT_ROOT_DIR : 본인의 CUDA 버전과 일치하는지 확인할 것
OPENCV_EXTRA_MODULES_PATH : 위에서 생성한 opencv 폴더 내 contrib 폴더 경로와 일치하는지 확인할 것
CUDA_ARCH_BIN CUDA_ARCH_PTX : 본인의 GPU 모델 사양에 맞출 것 ( https://developer.nvidia.com/cuda-gpus 를 통해 검색이 가능하다 🔎 )
CUDNN* : 본인이 설치한 cuDNN 버전을 확인한 후 맞춰서 변경해줄 것
이후 make -j 명령어를 통해 OpenCV를 빌드하고, sudo make install 명령어를 통해 설치한다.
make -j
sudo make install
OpenCV가 제대로 설치되었는지 명령어를 통해 확인해 보자.
pkg-config --modversion opencv4