在jetson nano中配opencv環境(python通用)


英偉達開發板是arm64,所以換源就要換成是支持arm64的國內源(不做詳細介紹,但是挺重要)

1.默認你的jetson nano已經安裝鏡像並啟動。打開控制終端,輸入如下命令安裝依賴庫

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential python3 python3-dev python3-pip python3-pandas python3-opencv python3-h5py libhdf5-serial-dev hdf5-tools nano ntp

2.安裝opencv

  • 構建OpenCV的第一步是在Jetson Nano上定義交換空間。
  • Jetson Nano具有4GB RAM。這不足以從源代碼構建OpenCV。因此,我們需要在Nano上定義交換空間以防止內存崩潰
  • pip3 install virtualenv
    python3 -m virtualenv -p python3 env 
    echo "source env/bin/activate" >> ~/.bashrc
    source ~/.bashrc
    

      

# Turn off swap
sudo swapoff /var/swapfile
# Allocates 4G of additional swap space at /var/swapfile
sudo fallocate -l 4G /var/swapfile
# Permissions
sudo chmod 600 /var/swapfile
# Make swap space
sudo mkswap /var/swapfile
# Turn on swap
sudo swapon /var/swapfile
# Automount swap space on reboot
sudo bash -c 'echo "/var/swapfile swap swap defaults 0 0" >> /etc/fstab'
# Reboot
sudo reboot

  

安裝opencv依賴項,用aptitude來進行操作:

# Update
sudo apt-get update
sudo apt-get upgrade
# Pre-requisites
sudo aptitude install build-essential cmake unzip pkg-config
sudo aptitude  install libjpeg-dev libpng-dev libtiff-dev
sudo aptitude  install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo aptitude  install libxvidcore-dev libx264-dev

#下面這個會告訴你有沖突項,你第一次選擇n,第二次之后選擇y即可
sudo aptitude  install libgtk-3-dev


sudo aptitude  install libatlas-base-dev gfortran
sudo aptitude  install python3-dev

 

下載opencv4.1源代碼(可以自己下載好再上傳上去linux中,也就是用xshell6的rz上傳文件)

# Create a directory for opencv
mkdir -p projects/cv2
cd projects/cv2
 
# Download sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.1.0.zip
 
# Unzip
unzip opencv.zip
unzip opencv_contrib.zip
 
# Rename
mv opencv-4.1.0 opencv
mv opencv_contrib-4.1.0 opencv_contrib

  

進入虛擬環境

source ~/env/bin/activate
# Install Numpy
pip install numpy

  

創建工作文件

# Create a build directory
cd projects/cv2/opencv
mkdir build
cd build

  

以下代碼都是在build路徑中進行操作

cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_ENABLE_NONFREE=ON \
    # Contrib path
    -D OPENCV_EXTRA_MODULES_PATH=~/projects/cv2/opencv_contrib/modules \
    # Your virtual environment's Python executable
    # You need to specify the result of echo $(which python)
    -D PYTHON_EXECUTABLE=~/env/bin/python \
    -D BUILD_EXAMPLES=ON ..

  

上傳缺少的文件(可能缺少):

 https://files.cnblogs.com/files/ikic/boostdesc_bgm.i,vgg_generated_48.i%E7%AD%89.rar

上面下載好之后,將里面所有的文件放去 opencv_contrib/modules/xfeatures2d/src/

cd projects/cv2/opencv_contrib/modules/xfeatures2d/src/

  然后用xshell的rz上傳里面所有文件

 

 

 有的話會說上傳錯誤,一個一個上傳。

 

上傳成功之后回到build的工作目錄中

cd projects/cv2/opencv/build

  

make -j2

  

在編譯過程中,會遇到一些問題:

 引用最愛鉛筆字的博客(當時沒有截屏):

這次跑到73%的時候又出現錯誤了fatal error: features2d/test/

: 沒有那個文件或目錄
 #include "features2d/test/test_detectors_regression.impl.hpp"
          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

 遇到這種問題,

是頭文件有點問題,把下面文件夾里的兩個文件拷貝到opencv_contrib/modules/xfeatures2d/test

在打開這個文件,修改下頭文件。

 

 

復制粘貼之后就修改報錯的那個文件

將下面這句話改成
 #include "features2d/test/test_detectors_regression.impl.hpp"
 然后以此類推,哪里報錯就修改那里的文件的頭include,哪個文件缺失就從opencv那移過來

 

 

 

這些錯誤修改之后就運行(可重復運行)

make -j2

 

直到后面全部運行成功

在build中安裝opencv

# Install OpenCV
sudo make install
sudo ldconfig

  

將構建的OpenCV庫鏈接到虛擬環境virtualenv

# Go to the folder where OpenCV's native library is built
cd /usr/local/lib/python3.6/site-packages/cv2/python-3.6
ls
# Rename(xxx是可替代的,看ls之后的結果來進行下一步修改)
mv cv2.cpython-36m-xxx-linux-gnu.so cv2.so
# Go to your virtual environments site-packages folder
cd ~/env/lib/python3.6/site-packages/
# Symlink the native library
ln -s /usr/local/lib/python3.6/site-packages/cv2/python-3.6/cv2.so cv2.so

  這樣就完成了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM