Jetson Nano에 OpenCV 4.1.2 설치

Jetson Nano에 OpenCV 4.1.2 설치

2022-10-04 last update

5 minutes reading 파이썬 Jetson JetsonNano OpenCV 기계 학습

개요



Jetson Nano에 OpenCV 4.1.2를 설치했습니다.

절차



아래 @asahi0301 님의 기사는 그대로입니다.
· htps : // 코 m / 아사히 0301 / ms / 3c287190348552f19415
또한 이전 기사에서 OpenCV 4.1.1을 빌드했을 때와 거의 관련이 없습니다.
· htps : // 이 m/다이스즈_/있어 ms/f17d365아895아599f832f
그러나 스크립트만 변경. 파일 이름은 install_opencv4.1.2_Nano.sh로 지정되었습니다. 개인적인 취미입니다만, Python2 대응 개소의 빌드는 하고 있지 않습니다.
#!/bin/bash
#
# Copyright (c) 2018, NVIDIA CORPORATION.  All rights reserved.
#
# NVIDIA Corporation and its licensors retain all intellectual property
# and proprietary rights in and to this software, related documentation
# and any modifications thereto.  Any use, reproduction, disclosure or
# distribution of this software and related documentation without an express
# license agreement from NVIDIA Corporation is strictly prohibited.
#

if [ "$#" -ne 1 ]; then
    echo "Usage: $0 <Install Folder>"
    exit
fi
folder="$1"
user="nvidia"
passwd="nvidia"

echo "** Remove OpenCV3.3 first"
sudo sudo apt-get purge *libopencv*

echo "** Install requirement"
sudo apt-get update
sudo apt-get install -y build-essential git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install -y python3.7-dev python-dev
sudo apt-get install -y libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
sudo apt-get install -y libv4l-dev v4l-utils qv4l2 v4l2ucp
sudo apt-get install -y curl
sudo apt-get update

echo "** Download opencv-4.1.2"
cd $folder
curl -L https://github.com/opencv/opencv/archive/4.1.2.zip -o opencv-4.1.2.zip
curl -L https://github.com/opencv/opencv_contrib/archive/4.1.2.zip -o opencv_contrib-4.1.2.zip
unzip opencv-4.1.2.zip 
unzip opencv_contrib-4.1.2.zip 
cd opencv-4.1.2/

echo "** Building..."
mkdir release
cd release/
cmake -D CUDA_HOST_COMPILER=/usr/bin/gcc-7 -D CUDA_NVCC_FLAGS="--expt-relaxed-constexpr" -D CUDA_VERSION="10000" -DWITH_NVCUVID=OFF -DENABLE_CCACHE=OFF -DEIGEN_INCLUDE_PATH=/usr/include/eigen3 -D HAVE_CUDA=1 -D WITH_CUDA=ON -D CUDA_ARCH_BIN="5.3" -D CUDA_ARCH_PTX="" -DWITH_FAST_MATH=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.1.2/modules -D WITH_GSTREAMER=ON -D WITH_LIBV4L=ON -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -DPYTHON3_EXECUTABLE=/usr/bin/python3 -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 WITH_CUBLAS=ON -D LAPACK_LIBRARIES=/usr/lib/aarch64-linux-gnu/libblas.so -D LAPACK_CBLAS_H=/usr/include/aarch64-linux-gnu/cblas.h ..
make -j2
sudo make install

echo "** Install opencv-4.1.2 successfully"
echo "** Bye :)"

일시적으로 스왑 영역 증가



OpenCV 4.1.1과 비교하면 4.1.2의 빌드에서는 메모리 영역을 사용하는 것 같다 (따라서 도중에 메모리 영역을 확보할 수 없어 빌드 실패한다). 그래서 6GB 정도 스왑 영역을 일시적으로 확보했다(빌드 끝나면 불필요해진다)
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=6144
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile

스크립트 실행


mkdir opencv
sh install_opencv4.1.2_Nano.sh opencv
(コンパイル/インストールが始まります)

그래서 오직 기다려

설치 후 시도



python3에서만 확인합니다.
>>> import cv2
>>> print(cv2.__version__)
4.1.2

그렇다면 일단 오케이

조심



cmake 때 빌드 대상 폴더에 .cache라는 폴더가 만들어지고 거기에 cudaoptflow 등의 외부 라이브러리가 다운로드되지만 GitHub의 기분에 따라 빈 파일 (사이즈 0)이되어 버리는 것 있다. 그 경우는 수동으로 적당한 장소에 다운로드하고 수동으로 cmake + make 를 다시 할 수밖에 없는 것 같다. . .

장치 과제



예를 들어,
pip3 install gym[atari]

처럼 opencv-python에 의존하는 설치가 실패합니다. 요컨대,
pip3 list

opencv-python, opencv-contrib-python이 표시되지 않습니다 (버전 4.1.2.27로 표시되는 것이 이상적입니다. 이것은 Jetson Nano에 국한되지 않고 cmake에서 빌드하면 그렇게 보입니다). 또, pypi 에는 바이너리 형식으로 밖에 제공되지 않고, 게다가 aarch64 처음 arm 용은 제공되고 있지 않기 때문에, 별도 수동으로 작성할 수 밖에 없지만, 잠시 궁리가 필요하다고 생각된다.

아래의 PyPi 리포지토리에는 작성 방법이 설명되어 있습니다. 요컨대, setup.py 등의 파일을 별도 준비할 필요가 있다는 것. 이것으로 Jetson Nano 전용을 만들면 잘 될지도 모르지만, 미착수.
· htps : // py 피. 오 rg / p 로지 ct / 오펜 cv py 텐 /