之前都是直接在树莓派上从源码编译OpenCV,但是速度太感人,而且也不符合嵌入式开发的真实场景,并不是所有的嵌入式设备都有树莓派这么多的硬件资源的,得益于树莓派官方提供的交叉编译工具链,我们可以在自己的电脑中为树莓派交叉编译OpenCV,所以本着学习的态度,就再重新编译一遍OpenCV

安装依赖环境

sudo apt-get update
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install cmake cmake-qt-gui
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
sudo apt-get install python-dev python-numpy
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev

下载源码

cd ~
mkdir opencv-build && cd opencv-build && mkdir build && mkdir install
git clone https://github.com/opencv/opencv.git
cd build

生成Makefile

  1. OpenCV需要使用Cmake生成Makefile,但是使用命令行执行cmake命令很繁琐,因为你需要配置一大堆的路径,导致命令很长,所以我们使用图形界面的cmake工具
  2. 树莓派交叉编译docker 树莓派交叉编译opencv_交叉编译

  3. 打开Cmake之后,首先设置源码目录和编译目录,分别选择opencv目录和build目录
  4. 树莓派交叉编译docker 树莓派交叉编译opencv_opencv_02

  5. 点击左下角的Configure,选择最后一项
  6. 树莓派交叉编译docker 树莓派交叉编译opencv_交叉编译_03

  7. 点击Next之后,需要设置目标系统的名称,交叉编译器的的路径,以及目标机的根目录,根据实际情况设置即可
  8. 树莓派交叉编译docker 树莓派交叉编译opencv_树莓派交叉编译docker_04

  9. 点击Finish,配置完成之后会有一片红色的区域,那些是可以配置的选项
  10. 树莓派交叉编译docker 树莓派交叉编译opencv_python_05

  11. 这里需要把BUILD_JPEGBUILD_PNG勾选,然后找到 CMAKE_INSTALL_PREFIX,修改为 ~/opencv-build/install,之后再次点击Configure,如果没有出错会变成全白,最后点击Generate即可。

附加配置

此时并不能直接编译,还需要添加一些选项,进入 ~/opencv-build/build 目录,使用gedit打开 CMakeCache 文件,搜索 CMAKE_EXE_LINKER_FLAGS ,添加 -lpthread -lrt -ldl ,保存即可。

将终端定位到build目录,执行

make -j8

根据你电脑的CPU的核心数修改 j 后面的参数,一般编译时间在10分钟左右。

安装

首先执行

make install

这时所有OpenCV的组件都在 ~/opencv-build/install,你可以通过任何你喜欢的方式放到树莓派的 /usr/local 下的相应目录中即可。

OpenCV for Python

这种安装方式只能让C/C++使用OpenCV库,如果你还需要Python,那么只需要在树莓派下执行以下命令即可。

sudo apt-get install python-opencv