树莓派安装Opencv+Contrib和 QT 详细教程


前言

最近,在树莓派上安装能在QT中使用的opencv库,踩了许多坑,也总结出了许多经验、方法,于是写此教程。一方面作以总结,同时也为需要帮助的朋友们提供一份参考方案。教程中如有任何错误之处,也请大家指正出来。谢谢!


一、卸载OpenCV或重装系统

1、卸载OpenCV

如果你目前的树莓派已经安装了opencv,再要叠加安装一个版本,可能会出现错误问题,所以请先卸载之前安装的版本。或者是重装系统,再进行安装。(如果没有特别重要的东西,建议重装)

  • 方法一:找到安装opencv的build目录,进入该目录进行卸载。
cd /home/pi/opencv/build
sudo make uninstall
cd  ..
rm -r build
  • 方法二:不知道安装目录在哪,则可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项
rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*  
cd /usr  
find . -name "*opencv*" | xargs sudo rm -rf  

2、重装系统

①. 下载raspbian

下载地址
在这里插入图片描述

②. 安装raspbian

先下载树莓派镜像烧录工具
在这里插入图片描述
然后用读卡器将系统烧录进SD卡。
SD卡最好是16G以上的,编译出来的文件挺大的。
在这里插入图片描述
安装好系统,需要进入树莓派系统,如果有外接屏幕,则可以跳过此处。(强烈建议使用VNC登录树莓派,或者扩展到显示器上,这样连接更加稳定,SSH连接容易断。)

③. 配置树莓派WiFi和SSH

无屏幕和键盘配置树莓派WiFi和SSH

SSH客户端需要下载。PUTTY使用介绍在这里插入图片描述

sudo passwd pi                   #修改 pi 密码  
sudo passwd root                 #设置 root 密码    
su root                          #切换到 root 用户  
su pi                            #切换到 pi 用户

④. 树莓派VNC设置

树莓派 VNC Viewer 远程桌面配置教程 及 显示 cannot currently show the desktop 的解决方法

⑤. 使用vnc进入树莓派

对树莓派进行初始设置。设置国家、地区、时区等等。
在这里插入图片描述

检查更新 时间较长,建议跳过。(点击Skip)


二、安装OpenCV

1.拓展树莓派的文件系统

在树莓派终端输入:

sudo raspi-config

选择Advanced Options,并进入。
在这里插入图片描述
选择 Expand Filesystem,扩展文件系统。
在这里插入图片描述
回车后会让你重启树莓派,选择立即重启。

  • 注:如果不能重启,则输入sudo reboot重启

重新启动后,文件系统已经扩展为包括SD卡上的所有空间。可以通过执行df -h 检查输出来验证磁盘是否已扩展。
在这里插入图片描述

2.更换树莓派源为国内镜像源

这里一定要更换。要不然会导致后面安装GTK2.0会失败。

①. 在树莓派终端输入:sudo nano /etc/apt/sources.list,编辑文件。
【Ctrl+o】编辑文件,回车进行编辑,将原本的所有内容全部删掉,把以下内容复制到文件中。

清华镜像源

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi

先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出 nano 编辑器回到命令行界面。
在这里插入图片描述

②. 同理:sudo nano /etc/apt/sources.list.d/raspi.list,编辑文件。

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

在这里插入图片描述

③. 更新系统

在树莓派终端输入:sudo apt-get update && sudo apt-get upgrade ,更新系统。(这里时间还挺长,多等一会。)
之后,建议重启一下树莓派sudo reboot

3.安装OpenCV所需要依赖的工具和一些图像视频库

①.安装CMake开发人员工具

  • 安装build-essential、cmake、git和pkg-config
sudo apt-get install build-essential cmake git pkg-config

②.安装常用图像工具包

  • 安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev 
  • 安装tif格式图像工具包
sudo apt-get install libtiff5-dev 
  • 安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev 
  • 安装png图像工具包
sudo apt-get install libpng12-dev 
  • 安装OpenGL库及其工具:
sudo apt-get install libglu1-mesa-dev
  • 安装常用视频库:使我们从磁盘读取各种视频文件格式,以及直接使用视频流
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 
sudo apt-get install libxvidcore-dev libx264-dev
  • 安装GTK2.0
sudo apt-get install libgtk2.0-dev
  • 安装OpenCV数值优化函数包
sudo apt-get install libatlas-base-dev gfortran

4.下载OpenCV源码

我下载的是opencv-3.4.3版本,选择其他版本也可以,直接按照网站去下载源代码。下载opencv-contrib必须和opencv版本一致。

上传工具下载:FileZilla使用教程

①. 下载Opencv-3.4.3

  • 方法一:树莓派终端输入命令
wget -O opencv-3.4.3.zip https://github.com/Itseez/opencv/archive/3.4.3.zip
  • 方法二:在PC端下载好,传到树莓派
下载地址:https://github.com/Itseez/opencv/archive/3.4.3.zip

这个下载可以从官网下载好,之后再从PC端传到树莓派上,上传工具下载地址在上面。


②. 下载OpenCV_contrib-3.4.3

重点!!!contrib文件必须使用wget下载

contrib文件必须使用wget下载,从官网下载的编译会报错,我就因为这个问题,停顿了两天。

wget -O opencv_contrib-3.4.3.zip https://github.com/Itseez/opencv_contrib/archive/3.4.3.zip

③. 解压Opencv-3.4.3和Opencv_contrib-3.4.3

unzip opencv-3.4.3.zip
unzip opencv_contrib-3.4.3.zip

5.可能需要的文件

进入/home/pi/opencv_contrib-3.4.3/modules/xfeatures2d/src/目录:
看看你的文件夹中是否有下面文件,如果没有的话,请下载这些文件,然后拷贝到此目录下。要不后面会报错。

下载链接:https://pan.baidu.com/s/13g_OJlLEXaU9kV2MEKvi2w 
提取码:1fhi 

在这里插入图片描述
在这里插入图片描述

6.配置CMake

  • 安装 cmake gui,使用图形界面
sudo apt-get install cmake-gui
  • 这里将opencv-3.4.3和contrib-3.4.3放在opencv目录下,进入opencv安装目录。
cd /home/pi/opencv

在这里插入图片描述

  • 新建一个 build文件夹, 存放 CMake 编译时产生的临时文件
mkdir build
  • 打开cmake可视化界面,进行编译
sudo cmake-gui

在这里插入图片描述

  • 选择完毕之后,点击左下的Configure。
    在这里插入图片描述
  • 按着如图选择,然后点击Finish,等待设置完毕。
    在这里插入图片描述
  • 出现 Configuring done,接着进行下一步。
 •	CMAKE_BUILD_TYPE 是编译方式
•	CMAKE_INSTALL_PREFIX 是安装目录
•	OPENCV_EXTRA_MODULES_PATH 是加载额外模块
•	BUILD_EXAMPLES 是编译例程

设置一下参数(按图中蓝色设置):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(这里不需要OPENGL的可以不用勾选)
在这里插入图片描述

  • 设置完毕之后,再点击Configure。 出现 Configuring done,接着再点击Generate,等待一会。
    在这里插入图片描述

  • 出现Generating done,设置参数成功,关闭Cmake界面。

  • 进入build/module文件夹,查看是否添加入了contrib的库,博主之前因为一直添加不上contrib库,折腾了半天。(face模型是contrib库的模型,看这个有没有)

在这里插入图片描述

  • 完成后我们备份一下build文件夹:
cd ..
cp -r build ./build1

如果出错了,可以删除build文件夹,重新编译,不需要也可以不备份。

7.编译OpenCV

①给树莓派增加交换空间SWAP

  • 在开始编译前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。
  1. 输入sudo nano /etc/dphys-swapfile打开 / etc / dphys - swapfile 文件。
  2. 然后编辑 CONF_SWAPSIZE 变量为2048,保存并退出。
    在这里插入图片描述
  3. 重新启动交换服务
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start

注意:增加交换空间的大小可能烧坏树莓派 SD卡,因此在我们后续编译完成之后就再改回CONF_SWAPSIZE

②编译、安装

  • 进入build文件夹
cd /home/pi/opencv/build
  • 输入命令,进行编译。
sudo make -j4 
  • make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快!
    在这里插入图片描述
  • 到100%这样就算编译成功了。
  • 输入一下命令,开始安装:
sudo make install
  • 更新动态链接库 (注意:是 L 的小写 l 而不是 i 的大写):
sudo ldconfig
  • 进入/etc/dphys-swapfile ,将文件的 CONF_SWAPSIZE 重置为 100,然后重新启动交换服务。
sudo nano /etc/dphys-swapfile
  • 修改CONF_SWAPSIZE=100,重启交换服务。
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
  • 到这里安装opencv就结束了。

三、配置OpenCV

1、配置opencv.conf

  • 输入命令,打开opencv.conf。
sudo nano /etc/ld.so.conf.d/opencv.conf
  • 在文件末尾加入如下内容,并保存退出。
/usr/local/lib
 ?

在这里插入图片描述

  • 输入如下命令,更新下ldconfig
sudo ldconfig

2、bash.bashrc 配置文件

  • 输入命令sudo nano /etc/bash.bashrc打开bash.bashrc配置文件 在文件末尾加入以下代码:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig       
export PKG_CONFIG_PATH

在这里插入图片描述

  • 保存退出后输入命令sudo reboot重启树莓派。

    我们可以通过下面命令来查看已添加的PKG_CONFIG_PATH环境变量:

echo $PKG_CONFIG_PATH

四、安装QT Creator

sudo apt-get install qt5-default
  • 一定要确保第一个安装成功了再输入第二个命令
sudo apt-get install qtcreator
  • 如果出现QT图标则表示安装成功
    在这里插入图片描述
  • 安装好之后,在左上角的菜单栏的程序里,就可以打开QT了,打开之后先别着急新建工程,打开 工具 下 选项,打开左边的kits,然后在编译器一栏,添加下选择GCC - C++,然后把编译器路径 选择 /usr/bin/arm-linux-gnueabihf-gcc 即可。
    在这里插入图片描述

五、可能会出现的问题:

1、LibGlu.so相关问题

[ 86%] Linking CXX executable …/…/bin/cpp-example-detect_mser
CMakeFiles/example_detect_mser.dir/detect_mser.cpp.o: In function draw(void*)’: detect_mser.cpp:(.text._ZL4drawPv+0x5a): undefined reference to gluLookAt’
CMakeFiles/example_detect_mser.dir/detect_mser.cpp.o: In function main’: detect_mser.cpp:(.text.startup.main+0x2523): undefined reference to gluPerspective’
collect2: error: ld returned 1 exit status
make[2]: *** [samples/cpp/CMakeFiles/example_detect_mser.dir/build.make:130: bin/cpp-example-detect_mser] Error 1
make[1]:***[CMakeFiles/Makefile2:24582:samples/cpp/CMakeFiles/example_detect_mser.dir/all] Error 2
make: *** [Makefile:163: all] Error 2

  • 上面的报错就是找不到libGLU.so文件,那我们就手动添加。
  • 这个问题还挺头大的,试了好多方法,下面这个比较有用。但是libGLU.so文件要自己找。 不确定位置是否一样。
  • 在下面两个link.txt文件中添加libGLU.so的目录。目的是为了读取到此文件。
 /opencv/build/samples/opengl/CMakeFiles/example_opengl_opengl.dir/link.txt
 /opencv/build/samples/cpp/CMakeFiles/example_cpp_detect_mser.dir/link.txt

在这里插入图片描述
在这里插入图片描述

参考解决方法:https://github.com/opencv/opencv/issues/12648

总结

例如:以上就是安装的全部过程,本文仅仅只适用于在QT中使用opencv的安装,相当于编译的是C++的例程。希望对各位朋友能够提供一些帮助。 本教程参考了以下文章,在此感谢这些作者:

树莓派安装Opencv方法总结!包括各种报错解决方法!

树莓派3B/3B+和4B安装OpenCV教程 (详细教程)

树莓派3和4B安装OpenCV教程(编译源码,一次成功)提供安装好OpenCV的系统镜像

树莓派4B:安装QT5开发环境

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值