문서개요
일반 jetpack library를 설치할 경우엔 cuda를 사용하지 않는 opencv가 설치되기 때문에 cuda를 사용하는 opencv를 따로 설치 과정에 대해 서술합니다.
환경
Jetson Nano
Jetpack 4.6.1
사전 설치
opencv 전체 빌드에는 약 8GB 이상의 램이 필요하며, Jetson nano는 ram이 4GB 이기 때문에 swap 공간을 할당해주어야 합니다. nano에서 하는 경우 아래 과정을 먼저 따라해주세요.
dphys-swapfile 설치
$ sudo apt-get install dphys-swapfile
/sbin/dphys-swapfile 수정
$ sudo vi /sbin/dphys-swapfile CONF_SWAPSIZE=4096 CONF_SWAPFACTOR=2 CONF_MAXSWAP=4096
/etc/dphys-swapfile 주석 해제 및 수정
$ sudo vi /etc/dphys-swapfile CONF_SWAPSIZE=4096 CONF_SWAPFACTOR=2 CONF_MAXSWAP=4096
reboot
$ sudo reboot
swap 확인
$ free -m
→ swap 6074 정도로 출력되면 된다.
절차
기존 jetpack library 설치 후 jetson_release로 opencv 확인
openCV 4.1.1 삭제
$ sudo apt purge libopencv-dev libopencv-python libopencv-samples libopencv*
opencv가 남아있는지 확인
$ pkg-config --modversion opencv4
패키지 업데이트 및 필요한 패키지 설치
$ sudo apt update
$ sudo apt install -y python3-pip python-dev python3-dev python-numpy python3-numpy $ sudo sh -c "echo '/usr/local/cuda/lib64' >> /etc/ld.so.conf.d/nvidia-tegra.conf" $ sudo apt install -y qt5-default $ sudo apt install -y build-essential cmake git unzip pkg-config libswscale-dev $ sudo apt install -y libcanberra-gtk* libgtk2.0-dev $ sudo apt install -y libtbb2 libtbb-dev libavresample-dev libvorbis-dev libxine2-dev $ sudo apt install -y curl
사진, 비디오 포맷 설치
$ sudo apt install -y libxvidcore-dev libx264-dev libgtk-3-dev $ sudo apt install -y libjpeg-dev libpng-dev libtiff-dev $ sudo apt install -y libmp3lame-dev libtheora-dev libfaac-dev libopencore-amrnb-dev $ sudo apt install -y libopencore-amrwb-dev libopenblas-dev libatlas-base-dev $ sudo apt install -y libblas-dev liblapack-dev libeigen3-dev libgflags-dev $ sudo apt install -y protobuf-compiler libprotobuf-dev libgoogle-glog-dev $ sudo apt install -y libavcodec-dev libavformat-dev gfortran libhdf5-dev $ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev $ sudo apt install -y libv4l-dev v4l-utils qv4l2 v4l2ucp libdc1394-22-dev
opencv & contrib modules 설치 및 압축해제
# 현재 경로 : ~ $ curl -L https://github.com/opencv/opencv/archive/4.5.1.zip -o opencv-4.5.1.zip $ curl -L https://github.com/opencv/opencv_contrib/archive/4.5.1.zip -o opencv_contrib-4.5.1.zip
$ unzip opencv-4.5.1.zip $ unzip opencv_contrib-4.5.1.zip
build 폴더 생성 및 이동
# 현재 경로 : ~/opencv-4.5.1 $ mkdir build $ cd build
CMake를 사용하여 빌드 설정
$ cmake -D WITH_CUDA=ON \ -D ENABLE_PRECOMPILED_HEADERS=OFF \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules \ -D WITH_GSTREAMER=ON \ -D WITH_LIBV4L=ON \ -D BUILD_opencv_python2=ON \ -D BUILD_opencv_python3=ON \ -D BUILD_TESTS=OFF \ -D BUILD_PERF_TESTS=OFF \ -D BUILD_EXAMPLES=OFF \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.1/modules \ -D EIGEN_INCLUDE_PATH=/usr/include/eigen3 \ -D CUDA_ARCH_BIN="7.2" \ -D CUDA_ARCH_PTX="" \ -D WITH_CUDNN=ON \ -D WITH_CUBLAS=ON \ -D ENABLE_FAST_MATH=ON \ -D CUDA_FAST_MATH=ON \ -D OPENCV_DNN_CUDA=ON \ -D ENABLE_NEON=ON \ -D WITH_QT=OFF \ -D WITH_OPENMP=ON \ -D WITH_OPENGL=ON \ -D BUILD_TIFF=ON \ -D WITH_FFMPEG=ON \ -D WITH_TBB=ON \ -D BUILD_TBB=ON \ -D WITH_EIGEN=ON \ -D WITH_V4L=ON \ -D OPENCV_ENABLE_NONFREE=ON \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D BUILD_NEW_PYTHON_SUPPORT=ON \ -D BUILD_opencv_python3=TRUE \ -D OPENCV_GENERATE_PKGCONFIG=ON \ -D BUILD_EXAMPLES=OFF ..
opencv와 contribs modules 빌드 (많은 시간 소요)
# 코어 개수에 따라 옵션을 주세요 # 예) make -j4 $ make $ sudo make install $ sudo ldconfig
swap 제거
swap 을 사용한 경우에만 이 과정을 따라해주세요.
$ sudo /etc/init.d/dphys-swapfile stop $ sudo apt-get remove --purge dphys-swapfile
위 과정을 끝낸 후 다시 jetson_release를 하면 Opencv:4.5.1 - with CUDA: YES 가 출력되는 것을 볼 수 있다.