Placa de desarrollo de la serie Jetson/instalación de Linux OpenCV, compilación del módulo CUDA, proceso detallado

I. Introducción

  1. Este artículo presenta principalmente la desinstalación, instalación y compilación de OpenCV en las tres placas de desarrollo de Jetson Oring Nano, Jetson Nano y Jetson TX2 (admite el módulo CUDA);
  2. Se corrigieron algunos problemas que ocurrieron.

2. Desinstalar OpenCV

¿Cómo comprobar si OpenCV instalado en esta máquina es compatible con CUDA?

  1. Si se ha instalado jtop, puede usarlo directamente para verlo, el comando es el siguiente.
sudo jtop

Presione el número 6 para ver la página INFO (algunas placas de desarrollo son 7INFO), puede ver:

* OpenCV:	4.1.1	compiled CUDA:	NO

El OpenCV (compilado) extraído del sitio web oficial no admite la aceleración CUDA y no puede utilizar completamente la GPU.

  1. Si jtop no está instalado, puede usar el siguiente comando para ver la biblioteca opencv:
pkg-config --libs opencv

Los resultados son los siguientes (solo se conservan las bibliotecas relacionadas con cuda):

-L/usr/local/lib -lopencv_cudaoptflow -lopencv_optflow 
-lopencv_cudalegacy -lopencv_cudawarping -lopencv_cudaimgproc 
-lopencv_cudafilters -lopencv_cudaarithm -lopencv_cudev

Si OpenCV no es compatible con CUDA, las bibliotecas anteriores no se incluirán.

¿Cómo desinstalar el OpenCV predeterminado?

sudo apt purge libopencv*
sudo apt autoremove

Se actualizará cuando termine. Teniendo en cuenta el problema de velocidad de la red, se recomienda cambiar primero la fuente del espejo, lo cual no se describirá en este artículo.

sudo apt update
sudo apt upgrade

3. Instalar y compilar OpenCV

1. Instalar bibliotecas dependientes

  • Herramientas genéricas
sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall
  • Bibliotecas de E/S de imágenes
sudo apt install libjpeg-dev libpng-dev libtiff-dev
  • Bibliotecas de vídeo/audio: FFMPEG, GSTREAMER, x264, etc.
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev 
sudo apt install libfaac-dev libmp3lame-dev libvorbis-dev
  • OpenCore: códec de voz adaptativo de banda estrecha de velocidad múltiple (AMRNB) y banda ancha (AMRWB)
sudo apt install libopencore-amrnb-dev libopencore-amrwb-dev
  • Bibliotecas de interfaz de programación de cámaras
sudo apt-get install libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~
  • Biblioteca GTK para las funcionalidades gráficas de usuario provenientes del módulo OpenCV highghui
sudo apt-get install libgtk-3-dev
  • Bibliotecas de Python para python3
sudo apt-get install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt install python3-testresources
  • Biblioteca de paralelismo C++ para CPU
sudo apt-get install libtbb-dev
  • Bibliotecas de optimización para OpenCV
sudo apt-get install libatlas-base-dev gfortran
  • Bibliotecas opcionales
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

2. Descarga OpenCV y descomprímelo

cd ~/Downloads
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.3.zip
unzip opencv.zip
unzip opencv_contrib.zip

Una vez completada la descompresión, cree un entorno virtual de Python (opcional).

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip

Utilice vim para editar .bashrc y agregue dos declaraciones de exportación.

sudo vim ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3

Hazlo efectivo inmediatamente.

source ~/.bashrc

Utilice virtualenv para crear un entorno virtual. virtualenvname es el nombre del entorno virtual. Se recomienda configurarlo en cv. -p indica la ruta principal de Python. El autor usa /usr/bin/python3.

virtualenv path/to/virtualenvname -p path/to/python3

Una vez que la creación sea exitosa, inicie el entorno virtual e instale numpy

source path/to/vitualenvname/bin/active
pip install numpy

3. Ejecutar la instalación.

Cree una carpeta de compilación e ingrésela.

cd opencv-4.5.3
mkdir build
cd build

Para ejecutar cmake, se recomienda escribir los siguientes comandos en el archivo .sh y ejecutarlo con bash. CUDA_TOOLKIT_ROOT_DIR debe cambiarse al directorio raíz de CUDA en su placa de desarrollo y CUDA_ARCH_BIN debe cambiarse a la capacidad informática de GPU. La versión de CUDA admitida por la placa de desarrollo utilizada por el autor es 10.2 y la capacidad informática es 5.3.
OPENCV_PYTHON3_INSTALL_PATH es el directorio de instalación de python3. ¿Aún recuerdas el entorno virtual que creamos? Al usarlo, cabe señalar que el autor creó el entorno virtual con la versión 3.6 de Python, por lo que la ruta es ruta/a/virtualenv/lib/ python3.6/site-packages, si su versión de Python no es 3.6, debe cambiarse a la versión real de Python. PYTHON_EXECUTABLE es la ruta al intérprete de Python y OPENCV_EXTRA_MODULES_PATH es la ruta a opencv_contrib. Asegúrese de completarlo con precisión.

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_python2=1 -D BUILD_opencv_python3=1 -D WITH_FFMPEG=1 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.2 \
-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=OFF -D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=5.3 \
-D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_PYTHON3_INSTALL_PATH=path/to/virtualenv/lib/python3.6/site-packages \
-D PYTHON_EXECUTABLE=path/to/virtualenv/bin/python \
-D OPENCV_EXTRA_MODULES_PATH=path/to/opencv_contrib-4.5.3/modules \
-D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D BUILD_EXAMPLES=OFF ..

Antes de compilar, verifique las siguientes opciones.

--   NVIDIA CUDA:                 YES (ver 11.2, CUFFT CUBLAS FAST_MATH)
--   NVIDIA GPU arch:             75
--   NVIDIA PTX archs:
-- 
--   cuDNN:                         YES (ver 8.2.0)

Por si acaso, primero expanda la memoria virtual y luego ejecute make.

cd /
sudo mkdir swap
cd swap
sudo dd if=/dev/zero of=swapfile bs=1M count=20480
sudo mkswap swapfile
sudo swapon swapfile

El comando anterior crea un espacio de intercambio con un tamaño de bs*count y el tamaño se puede modificar según sea necesario. Convierta el archivo generado en un archivo de intercambio y actívelo.
Configure la partición de intercambio para que se monte automáticamente en el arranque.

sudo cp /etc/fstab /etc/fstab.bak
echo '/swap/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

Verifique la cantidad de núcleos de CPU y habilite más núcleos. El tiempo de compilación de -j4 es de aproximadamente 1 a 3 horas y la instalación se realiza una vez completada la compilación.

nproc
make -j4
sudo make install

En este punto, la instalación es exitosa.

4. Compruebe si la instalación se realizó correctamente.

Ejecute el siguiente comando en python3. Si el número de versión de esta instalación se imprime correctamente, significa éxito.

import cv2
cv2.__version__

Ejecute el comando jtop y observe las siguientes condiciones, lo que significa que OpenCV es compatible con CUDA.

* OpenCV:	4.5.3	compiled CUDA:	YES

¡Ya terminaste!

Supongo que te gusta

Origin blog.csdn.net/qq_40773984/article/details/131695685
Recomendado
Clasificación