JETSON TX1中为Python3配置OpenCV
准备工作OpenCV源码编译OpenCV的安装Python调用cv2第一次使用JETSON TX1这个开发板,好像这个板子前几年就出来了,所以网上好多关于这个板子刷机的教程很多,所以我在这里就不过多赘述。而且刷机后它默认只支持python2
来调用opencv
,而python3
想要调用opencv
,就需要自己进行编译。今天我主要想分享的就是关于在这个板子上为python3
安装OpenCV
的过程。
参考了这篇博客
准备工作
python3.5
(通过Jetpack
刷机后默认的3.5)需要有numpy
的支持opencv
源码地址opencv_contrib
源码地址cmake
,以及一些相应的库支持sudo apt-get install -y \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 \cmake \python-numpy\pkg-config
OpenCV源码编译
解压下载好的opencv
源码和opencv_contrib
源码cd opencv-master
mkdir build
build文件夹主要用于存储我们通过cmake
编译后的opencv
的库cd build
接下来,我们需要在build
文件夹中进行cmake
编译,在执行下面的命令的过程中,千万不要直接复制我的命令,因为有好多细节的地方需要改成对应自己开发板的目录(下面我具体指出需要改的地方)。-D CMAKE_INSTALL_PREFIX
这个主要指定的是opencv的安装目录,这个参数的值一定要改,opencv
这个是我自己在/usr/local/
下新建的,专门用来存放需要安装opencv
的文件-D OPENCV_EXTRA_MODULES
这个需要对应之前你解压的opencv_contrib
下的modules
目录PYTHON3_LIBRARIES
这个主要要注意的是需要对应自己板子中的aarch64-linux-gnu
文件夹,不同板子这个文件夹的名字可能不同,不过都在/usr/lib/
这个目录下,不确定的话,就在/usr/lib/
目录下找带有linux-gnu
字样的文件夹即可PYTHON3_NUMPY_INCLUDE_DIRS
这个主要对应python3
下numpy
的一个目录,后面的..
一定要加上cmake -D BUILD_opencv_python3=YES -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv -D OPENCV_EXTRA_MODULES=/home/nvidia/ opencv_contrib-master/modules -D PYTHON3_LIBRARIES=/usr/lib/aarch64-linux-gnu/libpython3.5m.so -D PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include/ ..
确保所有的东西都没错的话,直接执行,如果出现如下图所示的结果,说明编译成功了。
OpenCV的安装
在build
目录下执行make -j4
静静等待成功,make
成功时如下图所示:sudo make install
,install
成功时如下图所示:
sudo ldconfig
到此OpenCV
就安装成功了。但是,这个时候python直接调用还是不行的。我们在上面make
成功的时候,发现有这样的提示:
也就是我们在make成功后,生成了cv2.cpython-35m-aarch64-linux-gnu.so
这样的一个.so
文件。这个文件也是我们通过python3
调用OpenCV
的关键。
Python调用cv2
接下来,我们需要找到cv2.cpython-35m-aarch64-linux-gnu.so
,然后将它所在的路径添加到环境变量当中,cv2
就可以永久使用了。
具体步骤:
find / -name cv2.cpython-35m-aarch64-linux-gnu.so
我们发现可以找到多个对应的路径,我们选择其中一个,将它添加到环境变量当中即可export PYTHONPATH=$PYTHONPATH:/home/nvidia/opencv-master/build/lib/python3/
测试。python3 -c 'import cv2; print(cv2.__version__)'
至此完,希望能够帮助到大家。