一、环境
rk3399 ARM架构芯片、ubuntu 18.04 bionic、gcc 版本7.5、opencv3.4.15版本
二、编译步骤
参照https://wiki.t-firefly.com/zh_CN/Firefly-Linux-Guide/demo_OpenCV_support.html
1、搭建python3.7虚拟环境
依次安装gcc和cmake等编译环境 # 安装python3.7-tk 和 python3.7-dev # 安装virtualenv虚拟环境
sudo apt install gcc cmake git build-essential \
python3-tk python3.7-dev \
virtualenv
2、创建python3.7虚拟环境
virtualenv -p /usr/bin/python3.7m /home/firefly/venv
使用虚拟环境,如果想退出可以在终端输入 deactivate
source /home/firefly/venv/bin/activate
3、安装Opencv所需的环境包
安装编译环境、gtk包和相关编解码库
sudo apt install cmake build-essential libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libjasper-dev
注意1:阿里云的安装源没有libjasper-dev,得把安装源更换为清华源,安装完libjasper-dev后,建议换回原来阿里云的安装源,听说清华源的包较旧。
参考 https://blog.csdn.net/u011622208/article/details/105252720
编辑源 vi /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
解决是靠全部更改为老版本的清华源 替换原有 /etc/apt/sources.list
sudo apt update
apt install libjasper1 libjasper-dev
注意2 如果安装了rknn_toolkit(or lite)则不需要再安装Python-numpy,否则会导致rknn_toolkit(or lite)无法使用
sudo apt install python-numpy
支持Gstreamer API
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
4、下载Opencv
创建文件夹
mkdir opencv
cd opencv
下载 opencv-3.4.15.zip
wget https://github.com/opencv/opencv/archive/refs/tags/3.4.15.zip
unzip opencv-3.4.15.zip
5、配置
mkdir build
cd build
让 OpenCV 和 Python3 之间建立联系
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_GSTREAMER=ON \
-D PYTHON_DEFAULT_EXECUTABLE=$(python -c "import sys; print(sys.executable)")\
-D PYTHON3_EXECUTABLE=$(python -c "import sys; print(sys.executable)") \
-D PYTHON3_NUMPY_INCLUDE_DIRS=$(python -c "import numpy; print (numpy.get_include())") \
-D PYTHON3_PACKAGES_PATH=$(python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") \
../opencv-3.4.15
6、编译安装
如果板子内存不超过2G,建议不超过-j4
make -j6
安装的过程需要sudo权限
sudo make install
(愉快地编译完成,没有任何错误发生。而同样的opencv3.4.15源文件在x86的交叉编译环境下,问题非常多,需要逐个解决。)
7、最后,在使用opencv库时,需要把libjasper.so.1.0.0拷贝到opencv的库目录,建立相应的软链接,一起使用。
三、题外
一样的opencv3.4.15源文件在ubuntu18.04,x86的交叉编译环境下,错误百出,问题非常多,需要逐个解决。参考另外一篇文章。