TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装

一、需求

1、在TX2上编译安装OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5

 

二、当前环境

1、在TX2板子上安装好Jetpack包后,对应的 CUDA 便是 8.0 版本,查看命令如下;

//
nvcc -V
//

2、python版本用如下命令查看,我的开发板,经过查看有两个版本 2.7 和 3.5;

//
查看python2.x版本的命令
python
查看python3.x版本的命令
python3
//

3、Jetpack包刷好后,对应的OpenCV是2.4.13(这各版本我没有动,事实上也没有影响我后面的编译)。

 

三、分析

1、目前我需要对应的OpenCV3.2源码和OpenCV_contrib3.2源码。

2、具体的安装步骤参考资料是OpenCV官方文档和之前自己的安装OpenCV3.2+CUDA8.0的经验,链接如下;

(1)英文:Building OpenCV for Tegra with CUDA 本人翻译: Building OpenCV for Tegra with CUDA

(2)个人之前经验:jetson TX2如何安装opencv3.0或者是更高版本

 

四、安装步骤

1、下载OpenCV3.2源码和OpenCV_contrib3.2源码

(1)具体见OpenCV下载途径介绍 或者是参考Building OpenCV for Tegra with CUDA中的git方式下载(注:大陆采用git建仓克隆的方式超级慢,并且特别容易失败)。

(2)下载的源码从PC上拷贝到TX2上,本人将解压后的opencv-3.2.0、opencv_contrib-3.2.0放在自己建的路径 /home/nvidia/guit/OpenCV3.2_with_contrib/下。

2、Ubuntu Linux环境下预先准备

(1)这些是在Linux上为Tegra构建OpenCV的基本要求:

a、CMake 2.8.10 or newer

b、CUDA toolkit 8.0 (7.0 or 7.5 may also be used)

c、Build tools (make, gcc, g++)

d、Python 2.6 or greater

(2)无论什么平台(DRIVE PX 2, Desktop, etc.),这些都是相同的。在Linux上构建一些开发包是必需的:

// 
libglew-dev  
libtiff5-dev  
zlib1g-dev  
libjpeg-dev  
libpng12-dev  
libjasper-dev  
libavcodec-dev  
libavformat-dev  
libavutil-dev  
libpostproc-dev  
libswscale-dev  
libeigen3-dev  
libtbb-dev  
libgtk2.0-dev  
pkg-config  
//

(3)上面的一些软件包是Ubuntu Linux系统的“universe 存储库”。如果您还没有启用该存储库,那么在尝试安装上面列出的所有软件包之前,您需要执行以下操作:

//
$ sudo apt-add-repository universe  
$ sudo apt-get update  
//

(4)可以将以下命令粘贴到shell中,以便安装所需的包:

//
$ sudo apt-get install \  
    libglew-dev \  
    libtiff5-dev \  
    zlib1g-dev \  
    libjpeg-dev \  
    libpng12-dev \  
    libjasper-dev \  
    libavcodec-dev \  
    libavformat-dev \  
    libavutil-dev \  
    libpostproc-dev \  
    libswscale-dev \  
    libeigen3-dev \  
    libtbb-dev \  
    libgtk2.0-dev \  
    pkg-config  
//为可读性添加了行中断和延续字符。
// 

(5)如果您想要构建Python绑定,那么您还需要使用Python 2和Python 3中的任何一个或两个适当的包

a、python-dev / python3-dev
b、python-numpy / python3-numpy
c、python-py / python3-py
d、python-pytest / python3-pytest

(6)要做的命令如下:

//
$ sudo apt-get install python-dev python-numpy python-py python-pytest  
# And, optionally:  
$ sudo apt-get install python3-dev python3-numpy python3-py python3-pytest  
//

(7)一旦安装了所有必要的包,您就可以配置构建了。

3、进入opencv-3.2.0路径下创建 build 文件

//
cd ~/opencv-3.2.0
mkdir build 
//

4、进入build 路径下创建 CMakeList.txt,并将下面的内容复制到CMakeList.txt中

a、进入build 路径下创建 CMakeList.txt

//
cd /build
gedit CMakeList.txt
//

b、赋值如下内容到CMakeList.txt中

//
cmake \  
    -DCMAKE_BUILD_TYPE=Release \  
    -DCMAKE_INSTALL_PREFIX=/home/nvidia/guit/OpenCV3.2_with_contrib/install \  
    -DBUILD_PNG=OFF \  
    -DBUILD_TIFF=OFF \  
    -DBUILD_TBB=OFF \  
    -DBUILD_JPEG=OFF \  
    -DBUILD_JASPER=OFF \  
    -DBUILD_ZLIB=OFF \  
    -DBUILD_EXAMPLES=OFF \  
    -DBUILD_opencv_java=OFF \  
    -DBUILD_opencv_python2=OFF \  
    -DBUILD_opencv_python3=ON \  
    -DENABLE_PRECOMPILED_HEADERS=OFF \  
    -DWITH_OPENCL=OFF \  
    -DWITH_OPENMP=OFF \  
    -DWITH_FFMPEG=ON \  
    -DWITH_GSTREAMER=OFF \  
    -DWITH_GSTREAMER_0_10=OFF \  
    -DWITH_CUDA=ON \  
    -DWITH_GTK=ON \  
    -DWITH_VTK=OFF \  
    -DWITH_TBB=ON \  
    -DWITH_1394=OFF \  
    -DWITH_OPENEXR=OFF \  
    -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-8.0 \  
    -DCUDA_ARCH_BIN=6.2 \  
    -DOPENCV_EXTRA_MODULES_PATH = /home/nvidia/guit/OpenCV3.2_with_contrib/opencv_contrib-3.2.0/modules \
    -DCUDA_ARCH_PTX="" \  
    -DINSTALL_C_EXAMPLES=ON \  
    -DINSTALL_TESTS=OFF \  
    -DOPENCV_TEST_DATA_PATH="" \  
    ../opencv  
//

c、上述内容介绍具体见Building OpenCV for Tegra with CUDA,其中特别说明 -DCUDA_ARCH_BIN=6.2 中的6.2是对应的TX2的,如果是TX1对应的参数是5.3,如果配置成5.3会报错,Stack Overflow上有人遇到过。(我配置成6.2,但是实际配置完后打印出来的信息显示还是5.3,具体见下面两张图,这点很奇怪,我还没有搞清楚,郁闷)

 

5、CMakeList.txt编辑好后,执行如下命令,最终成功后,会打印出如下图配置信息,同时生成Makefile 文件

//
cmake ../
//

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第1张图片

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第2张图片

6、上一步成功生成 Makefile 文件后,执行如下命令,成功后如图所示

//
make -j6   //-j6表示开6个线程去执行make操作
//

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第3张图片

7、make 成功后就会对应的 lib 文件,执行下面命令后,会将对应的头文件和lib文件安装到系统路径

//
sudo make install
//

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第4张图片

8、安装的路径,我CMakeList.txt中配置的是自己建立的路径,但是实际生成的Makefile文件中直接默认为了 /usr/local,所以最后 make install 后,头文件在 /usr/local/include下,lib文件在 /usr/local/lib 下,此处如果不甘心 install 路径是 /usr/local 的话,可以在Makefle文件中改对应的路径。

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第5张图片

9、最后配置环境变量,在etc/ld.so.conf 中加上lib路径

//
cd /etc/
打印一下ld.so.conf中的信息
cat ld.so.conf
添加编译好后的 lib 路径
sudo vi ld.so.conf
然后在文件后面写入路径,本人的如下
/home/nvidia/guit/OpenCV3.2_with_contrib/opencv-3.2.0/build/lib
/usr/local/lib
//

10、测试一下

(1)Python3.5

a、测试代码,我在TX2上插入一个USB摄像头,对应的挂载文件是 /dev/video1

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第6张图片

//
import cv2  
import numpy as np  
  
cap = cv2.VideoCapture("/dev/video1")  
while(1):  
    # get a frame  
    ret, frame = cap.read()  
    # show a frame  
    cv2.imshow("capture", frame)  
    if cv2.waitKey(1) & 0xFF == ord('q'):  
        break  
cap.release()  
cv2.destroyAllWindows()
//

b、结果如图

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第7张图片

(2)Qt 中C++测试

a、.pro文件的OPenCV头文件、库文件配置如下

//.pro文件配置 OpenCV 部分
INCLUDEPATH += /usr/local/include
INCLUDEPATH += /usr/local/include/opencv
INCLUDEPATH += /usr/local/include/opencv2

LIBS += /usr/local/lib/libopencv_*.so
LIBS += /usr/local/lib/libopencv_*.so.3.2
LIBS += /usr/local/lib/libopencv_*.so.3.2.0
//

b、具体工程链接测试代码

c、结果图

TX2--OpenCV3.2+OpenCV_contrib3.2+CUDA8.0+python3.5安装_第8张图片

 

致谢

1、 TX2学习笔记--Building OpenCV for Tegra with CUDA

2、jetson TX2如何安装opencv3.0或者是更高版本

3、Building OpenCV for Tegra with CUDA

 

 

你可能感兴趣的:(TX2,OpenCV,NVIDIA-TX2)