在Jetson TX2上安裝OpenCV(3.4.0)


參考文章:How to Install OpenCV (3.4.0) on Jetson TX2

與參考文章大部分都是相似的,如果不習慣看英文,可以看看我下面的描述

 

在我們使用python3進行編程時,import cv2不起作用。由於預先安裝的opencv是與python2.7綁定的,如果想在python3環境下使用,我們需要重新編譯opencv

 

先決條件

已經在Jetson TX2上安裝了JetPack-3.3(或JetPack-3.2.1或JetPack-3.1)

 

安裝步驟

首先清理舊的opencv包,並構建opencv所需的依賴項

1. 刪除所有由JetPack(或OpenCV4Tegra)安裝的舊opencv內容

sudo apt-get purge libopencv*

2.我更喜歡使用新版本的numpy(與pip一起安裝),所以我也要刪除這個python-numpy apt包

sudo apt-get purge python-numpy

3. 刪除其他未使用的apt包

sudo apt autoremove

4. 將所有已安裝的apt軟件包升級到最新版本(可選做)

sudo apt-get update
sudo apt-get dist-upgrade

5. 將gcc apt包更新到最新版本(強烈推薦)

sudo apt-get install --only-upgrade g++-5 cpp-5 gcc-5

6. 基於jetson安裝opencv依賴項

sudo apt-get install build-essential make cmake cmake-curses-gui \
                       g++ libavformat-dev libavutil-dev \
                       libswscale-dev libv4l-dev libeigen3-dev \
                       libglew-dev libgtk2.0-dev

7. 為gstreamer安裝依賴項

sudo apt-get install libdc1394-22-dev libxine2-dev \
                       libgstreamer1.0-dev \
                       libgstreamer-plugins-base1.0-dev

8. 安裝其他依賴項

sudo apt-get install libjpeg8-dev libjpeg-turbo8-dev libtiff5-dev \
                       libjasper-dev libpng12-dev libavcodec-dev
sudo apt-get install libxvidcore-dev libx264-dev libgtk-3-dev \
                       libatlas-base-dev gfortran
sudo apt-get install libopenblas-dev liblapack-dev liblapacke-dev

9. 安裝QT5的依賴項

sudo apt-get install qt5-default

10. 安裝python3的依賴項

sudo apt-get install python3-dev python3-pip python3-tk
sudo pip3 install numpy
sudo pip3 install matplotlib

修改matplotlibrc的41行,'backend      : TkAgg'

sudo vim /usr/local/lib/python3.5/dist-packages/matplotlib/mpl-data/matplotlibrc

vim技巧 : 按Esc,set nu(顯示行號)

11. 安裝python2的依賴項

sudo apt-get install python-dev python-pip python-tk
sudo pip2 install numpy
sudo pip2 install matplotlib

修改matplotlibrc的41行,'backend      : TkAgg'

sudo vim /usr/local/lib/python2.7/dist-packages/matplotlib/mpl-data/matplotlibrc

在下載和編譯opencv-3.4.0之前,需要先進行一些修改。具體點說是修改  /usr/local/cuda/include/cuda_gl_interop.h 並修復libGL.so的符號鏈接

sudo vim /usr/local/cuda/include/cuda_gl_interop.h
cd /usr/lib/aarch64-linux-gnu/
sudo ln -sf tegra/libGL.so libGL.so

下面是cuda_gl_interop.h的62行到68行,修改后如下:

//#if defined(__arm__) || defined(__aarch64__)
//#ifndef GL_VERSION
//#error Please include the appropriate gl headers before including cuda_gl_interop.h
//#endif
//#else
 #include <GL/gl.h>
//#endif

 

接下來,下載opencv-3.4.0源代碼,cmake並編譯。注意,opencv_contrib模塊(cnn/dnn之類的東西)會在pycaffe上引起問題,所以經過一些實驗之后,我決定完全不包含這些模塊。

mkdir -p ~/src
cd ~/src
wget https://github.com/opencv/opencv/archive/3.4.0.zip \
       -O opencv-3.4.0.zip
unzip opencv-3.4.0.zip

2. Build opencv (CUDA_ARCH_BIN="6.2" for TX2, or "5.3" for TX1)
cd ~/src/opencv-3.4.0
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
        -D WITH_CUDA=ON -D CUDA_ARCH_BIN="6.2" -D CUDA_ARCH_PTX="" \
        -D WITH_CUBLAS=ON -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON \
        -D ENABLE_NEON=ON -D WITH_LIBV4L=ON -D BUILD_TESTS=OFF \
        -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF \
        -D WITH_QT=ON -D WITH_OPENGL=ON ..
make -j4
sudo make install

如果下載opencv源碼較慢,可以在windows的瀏覽器中輸入網址 https://github.com/opencv/opencv/archive/3.4.0.zip 手動下載源碼包,之后將源碼包放入TX2

 

驗證安裝是否成功

ls /usr/local/lib/python3.5/dist-packages/cv2.*
/usr/local/lib/python3.5/dist-packages/cv2.cpython-35m-aarch64-linux-gnu.so
ls /usr/local/lib/python2.7/dist-packages/cv2.*
/use/local/lib/python2.7/dist-packages/cv2.so
python3 -c 'import cv2; print(cv2.__version__)'
3.4.0
python2 -c 'import cv2; print(cv2.__version__)'
3.4.0

 

在Jetson TX2上正確安裝了opencv-3.4.0之后,我們可以使用python腳本捕獲和顯示來自Jetson板載攝像機、USB網絡攝像頭或IP攝像頭的實時視頻。跟隨這篇文章:在Jetson TX2上捕獲、顯示攝像頭視頻

 


免責聲明!

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



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