magozironのブログ

徒然なるままに備忘録などなど

Jetson xavier NX開発者キットのOpenCVをローカル環境でCUDAbuildする。

おばんでーす。

SDKmanagerからjetpackをインストールするとCUDAが使用できないOpencvがインストールされている。このcudabuildをローカル環境で実施してみたい。

DOCKERを使用すればいいよね、というご意見はごもっとも。だってDOCKERは殆どまだ使えないから。。。

時間を割と割いているが、今後役に立つことを願って、下記に備忘録。

 

注意点は、

makefileを作成時にpython 2のパスが表示される可能性があるので、そこはcmake-guiを使用し全て削除。(※cmake-guiの方が編集しやすいので必須と思う。)

○numpyは2.x系では動かない。ターミナルから怒られる。

○buildに30分くらいかかるかな?

○4.5.5以外のバージョンが必要な方はgit checkout 4.5.5 のバージョンを変更してね。(opencv_contribも忘れずに。)

○うまくいかない場合は、他の依存関係が足らないので、工夫してね。

 

色々なサイトを漁った結果、下記にスクリプトを残す。

※下記のスクリプトはorin nanoではまだうまくいっていない。動作の暁には後日別掲載したい。

ーーーーーーーーーーーーーーーーーーーーーーーーーー

#!/bin/bash

##uninstall  opencv
##sudo apt-get --purge remove libopencv*

#update
sudo apt -y update
sudo apt -y upgrade

#install requierd librarlies

# Generic tools:
sudo apt install -y build-essential cmake pkg-config unzip yasm git checkinstall

# Image I/O libs
sudo apt install -y libjpeg-dev libpng-dev libtiff-dev

# Video/Audio Libs - FFMPEG, GSTREAMER, x264 ans so on
sudo apt install -y libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev
sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install -y libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt install -y libfaac-dev libmp3lame-dev libvorbis-dev libdc1394-dev

#install gtkglext-1.0
sudo apt-get -y install libgtk-3-dev
sudo apt-get -y install mesa-common-dev libglu1-mesa-dev freeglut3-dev

# OpenCore - Adaptive Multi Rate Narrow Band (AMRNB) and Wide Band (AMRWB) speech codec
sudo apt install -y libopencore-amrnb-dev libopencore-amrwb-dev

# Cameras programming interface libs
sudo apt-get install -y libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~

# Python libraries for python3:
# check numpy version 1.2x.x not 2.XXX
#sudo apt-get install -y python3-dev python3-pip python3-py python3-pytest
#sudo -H pip3 install -U pip numpy
#sudo apt install -y python3-testresources

# Parallelism library C++ for CPU
sudo apt-get install -y libtbb-dev

# Optimization libraries for OpenCV
sudo apt-get install -y libatlas-base-dev gfortran

# Optional libraries:
sudo apt-get install -y libprotobuf-dev protobuf-compiler
sudo apt-get install -y libgoogle-glog-dev libgflags-dev
sudo apt-get install -y libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

#open cv build
cd opencv && git checkout 4.5.5 && cd ..

cd opencv_contrib && git checkout 4.5.5 && cd ..

mkdir build && cd build

#make suorce code

cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D CMAKE_PYTHON3_EXECUTABLE=/usr/bin/python3.8 \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.8 \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.8 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \
-D PYTHON3_PACKAGES_PATH=/usr/lib/python3/dist-packages \
-D OPENCV_PYTHON3_INSTALL_PATH=/usr/lib/python3/dist-packages \
-D OPENCV_PYTHON3_VERSION=3.8 \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_python2=OFF \
-D WITH_TBB=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D WITH_CUBLAS=1 \
-D WITH_CUDA=ON \
-D BUILD_opencv_cudacodec=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=7.2 \
-D CUDA_ARCH_PTX=7.2 \
-D CUDA_GENERATE_CODE="arch=compute_72,code=sm_72" \
-D WITH_OPENGL=ON \
-D WITH_ITT=OFF  \
-D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D WITH_OPENNI=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON \
-D BUILD_opencv_world=ON \
-D BUILD_opencv_contrib_world=ON \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-11.4 \
-D WITH_NVCUVENC=OFF \
..

#Have to delete python2 path all
 
# build
time make -j$(nproc)

# install all built libs into your system
sudo time make install

sudo ldconfig
 
インストール後の確認。
sudo python3
import cv2
print(cv2.getBuildInformation())
ここでpython2のパスが表示されていたら再build、必須。
 
sudo jtopでご確認を。
では、またこんど!