2.更换树莓派源为清华镜像源,防止后面下载GTK2.0失败。
安装步骤
1.更新系统
复制代码
1 $ sudo apt-get update && sudo apt-get upgrade
2.在树莓派上安装OpenCV所需要依赖的工具和一些图像视频库
- 安装包括CMake的开发人员工具
复制代码
1 // 安装build-essential、cmake、git和pkg-config2 sudo apt-get install build-essential cmake git pkg-config
- 安装常用图像工具包
复制代码
1 // 安装jpeg格式图像工具包2 sudo apt-get install libjpeg8-dev
复制代码
1 // 安装tif格式图像工具包2 sudo apt-get install libtiff5-dev
复制代码
1 // 安装JPEG-2000图像工具包2 sudo apt-get install libjasper-dev
复制代码
1 // 安装png图像工具包2 sudo apt-get install libpng12-dev
复制代码
1 //v4l中4后面的是 英文字母“l”2 sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
- 安装GTK2.0
复制代码
1 sudo apt-get install libgtk2.0-dev
- 安装OpenCV数值优化函数包
复制代码
1 sudo apt-get install libatlas-base-dev gfortran
3.下载编译OpenCV源码
- 下载opencv3.4.3和opencv_contrib3.4.3
复制代码
1 // 下载OpenCV2 wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
复制代码
1 // 解压OpenCV2 unzip opencv-3.4.3.zip
复制代码
1 // 下载OpenCV_contrib库:2 wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip
复制代码
1 // 解压OpenCV_contrib库:2 unzip opencv_contrib-3.4.3.zip
使用CMake设置编译,然后运行 make 来编译OpenCV。这是整个过程中耗时最长的步骤,大约4个小时。
回到OpenCV存储库并创建 build 文件夹,用来存放 CMake 编译时产生的临时文件。
复制代码
1 //具体路径请以实际为准2 cd ~/opencv-3.4.33 4 // 新建build文件夹5 mkdir build6 7 // 进入build文件夹8 cd build9
- 设置CMake编译参数,安装目录默认为/usr/local
注意参数名、等号和参数值之间不能有空格,每行末尾“”之前有空格,这里使用换行符“”是为了看起来工整,参数值最后是两个英文的点,意思是上级
目录(【注意】如果在root用户下执行cmake命令,请将OPENCV_EXTRA_MODULES_PATH的值改为绝对路径,如:/home/pi/opencv_contrib-3.4.3/modules):
复制代码
/** CMAKE_BUILD_TYPE是编译方式* CMAKE_INSTALL_PREFIX是安装目录* OPENCV_EXTRA_MODULES_PATH是加载额外模块* INSTALL_PYTHON_EXAMPLES是安装官方python例程* BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON,要C++例程的话在最后一行前加参数INSTALL_C_EXAMPLES=ONINSTALL_CXX_EXAMPLES=ON)**/ sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules -D INSTALL_PYTHON_EXAMPLES=ON -D INSTALL_CXX_EXAMPLES=ON -D BUILD_EXAMPLES=ON ..
配置完后如下图:
因为下一步的编译会使用build文件中的东西,假如编译失败后还要重新进行cmake,比较耽误时间,这里可以直接备份一下cmake好的build文件夹,
命名为build1,重新make的时候可以拿来用。
复制代码
1 //返回上层目录2 cd ..3 //备份release文件夹4 cp -r release ./release1
在开始编译之前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。
打开 / etc / dphys - swapfile 文件:
复制代码
1 $ sudo nano /etc/dphys-swapfile
然后编辑 CONF_SWAPSIZE 变量:
注意:此处我将交换空间从100MB增加到2048MB;如果你不执行此步骤,你的树莓派编译时很可能挂起。
重新启动交换服务:
复制代码
1 $ sudo /etc/init.d/dphys-swapfile stop2 $ sudo /etc/init.d/dphys-swapfile start
注意:增加交换空间的大小是烧坏树莓派 microSD卡的好方法。基于闪存的存储只能执行有限数量的写操作,直到该卡基本不能够容纳1和0。我们只能在短时间内
启动大型交换,所以这没什么大问题的。
复制代码
1 /**2 * 以管理员身份,否则容易出错3 * make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快4 * 可以根据自己机器的情况进行更改5 * 使用tee命令可以将编译过程中终端显示的信息保存到make.log文件中,便于查看,这样即使VNC断线,终端的* 信息太多看不到,也可以通过make.log文件查看编译过程。6 **/7 8 sudo make -j4 2>&1 | tee make.log
如果看到进度编译到100%,那么说明编译安装成功。
复制代码
1 // 安装2 sudo make install3 4 // 更新动态链接库5 sudo ldconfig
注意: 不要忘记回到 /etc/dphys-swapfile 文件:
1.将 CONF_SWAPSIZE 重置为 100MB
2.重新启动交换服务
其他配置
设置库的路径,相当于windows下的环境变量,便于使用OpenCV库,也可以不进行设置,使用的时候说明路径也可。例如在编译时说明使用库的路径是 -L/usr/local/lib
1.配置opencv.conf
打开opencv.conf配置文件,在末端加入如下内容:
复制代码
1 //这里我使用的是树莓派默认的nano,也可以使用vim、gedit.打开opencv.conf文件 2 sudo nano /etc/ld.so.conf.d/opencv.conf 3 4 /** 5 *在末端添加如下内容 6 *注意:?表示一个空格,可能原因是有的语言要求最后有一个空格才可以编译通过。 7 **/ 8 /usr/local/lib 9 ?10 11 //加载一下12sudo ldconfig
2.打开 bash.bashrc 配置文件
复制代码
1 //打开bash.bashrc配置文件2 sudo gedit /etc/bash.bashrc3 4 5 // 在最后添加如下内容6 PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 7 export PKG_CONFIG_PATH