龙空技术网

树莓派配置opencv+qt(内含常见问题及解决办法)

InfinityCoder 342

前言:

此时小伙伴们对“树莓派重启进去不了桌面”大概比较注意,同学们都需要学习一些“树莓派重启进去不了桌面”的相关内容。那么小编也在网络上网罗了一些对于“树莓派重启进去不了桌面””的相关知识,希望我们能喜欢,小伙伴们快快来学习一下吧!

为树莓派配置OpenCV及QT1.安装raspbian系统1.1下载系统

树莓派系统官方下载链接:

这里有三个版本分别是:带桌面以及常用软件,仅桌面和不带桌面版本,可根据需要自行选择。

1.2准备空白SD卡

准备一张空白的SD卡,推荐大小为16G及以上,如果有一张含有内容的SD卡可以使用SDFormatter软件对SD卡进行格式化。如果只是单纯的将SD的内容删除是删不干净的,因为Windows系统下无法看到linux系统中的文件。

插入读卡器后软件会检测到SD卡,选择对应的硬盘格式化即可。

1.3写入系统

使用WWin32 Disk Imager软件将树莓派img系统文件烧入到SD卡中。

首先选择img文件,我下载的是仅桌面版本的系统

接着在Device出选择你的SD卡,通常会自动定位好,然后点击Write等待烧录完成。

1.4添加开机文件

添加ssh文件:右键新建一个文本文件将文件名改为ssh,同时将拓展名删除,该文件是为了是树莓派开启ssh服务。

添加wpa_supplicant.conf:新建文本文件重命名为wpa_supplicant.conf,并写入以下内容,该文件是用来配置WiFi

country=GBctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1network={    ssid="WiFi名"    psk="密码"    priority=5}

接着将这两个文件放去SD卡的根目录下

1.5远程登录使用putty软件用远程访问登录

这里的IP地址填写树莓派的IP地址,我选择通过进入路由器管理页面进行查看。

接着远程登录树莓派用户名pi,密码raspberry使用命令sudo raspi-config进行相应配置

默认开启图形界面

在树莓派设置中把根目录扩大到整个SD卡

命令行界面输入命令,进入树莓派配置界面。用上下键和左右键切换光标位置。

sudo raspi-config

第七行:Advanced Options

选择Expand Filesystem,将根目录扩展到这个SD卡,充分利用SD卡的存储空间。如果不进行这一步,后续命令会出现卡死。退出设置界面,重启树莓派。

sudo reboot
软件换源

在树莓派的命令行界面输入

sudo nano /etc/apt/sources.list

使用键盘方向键控制,在第一行开头加一个#,把下面的内容拷贝到最后一行之后,如图中的效果:

deb  stretch main contrib non-free rpideb-src  stretch main contrib non-free rpi

先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出nano编辑器回到命令行界面。再输入以下命令更新到清华大学镜像源最新的软件列表。

sudo apt-get update 

这个命令,会访问源列表里的每个网址,并读取软件列表,然后保存在树莓派本地。

以上步骤实现了Respbian的包管理器apt-get换源到清华大学软件镜像站,并更新了软件列表,今后在树莓派命令行中执行sudo apt-get install 软件名时便会自动从清华大学开源软件镜像站高速下载。

2.配置opencv2.1下载opencv

去opencv官网下载源文件以及contrib文件或者通过下面的命令

cdwget  

然后解压至想要的位置

2.2安装opencv所需的库

sudo apt-get install build-essential git cmake pkg-config -ysudo apt-get install libjpeg8-dev -ysudo apt-get install libtiff5-dev -ysudo apt-get install libjasper-dev -ysudo apt-get install libpng12-dev -ysudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -ysudo apt-get install libgtk2.0-dev -ysudo apt-get install libatlas-base-dev gfortran -y
2.3编译

设置编译参数

cd /home/pi/Downloads/opencv-3.4.0mkdir buildcd build

cmake编译

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-rasp -D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-3.4.10/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON  ..

备份build文件

1 //返回上层目录2 cd ..3 //备份release文件夹4 cp -r release ./release1

编译

make//出现错误提示无法写入的时候使用sudo命令sudo make
2.4报错及解决

下面几种错误是最常见的,基本没遇见过其他问题

fatal error: boostdesc_bgm.i: No such file or directory

解决方式:

采用的是源码编译的方式,所以可以查看 build 文件夹下的日志文件 CMakeDownloadLog.txt,在日志文件CMakeDownloadLog.txt中搜索 boostdesc_bgm.i 关键词 (不是在文件夹中搜索), 发现这个文件下载失败了。日志文件里就有它的下载地址,直接复制其下载地址到网页可以看该到文件的源码,直接拷贝源码并生存同名文件,放在 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。

总共缺了以下几个文件,都需要拷贝:

boostdesc_bgm.iboostdesc_bgm_bi.iboostdesc_bgm_hd.iboostdesc_lbgm.iboostdesc_binboost_064.iboostdesc_binboost_128.iboostdesc_binboost_256.ivgg_generated_120.ivgg_generated_64.ivgg_generated_80.ivgg_generated_48.i

报错2

/home/pi/opencv/opencv-3.4.10/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory #  include "opencv2/xfeatures2d/cuda.hpp"

去到对应路径找到文件

打开

替换

#include "/home/pi/opencv/opencv_contrib-3.4.10/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"

重新编译 sudo make

错误3

/home/pi/opencv/opencv-3.4.10/modules/stitching/src/precomp.hpp:91:12: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory #  include "opencv2/xfeatures2d/cuda.hpp"

打开文件

替换

#include "/home/pi/opencv/opencv_contrib-3.4.10/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp"

重新编译 sudo make

错误4

/home/pi/opencv/opencv-3.4.10/modules/stitching/src/matchers.cpp:52:10: fatal error: opencv2/xfeatures2d.hpp: No such file or directory #include "opencv2/xfeatures2d.hpp"

打开文件

替换

#include "/home/pi/opencv/opencv_contrib-3.4.10/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp"

重新编译 sudo make

错误5

/home/pi/opencv/opencv_contrib-3.4.10/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:43:10: fatal error: opencv2/xfeatures2d/nonfree.hpp: No such file or directory #include "opencv2/xfeatures2d/nonfree.hpp"

打开文件

替换

#include "/home/pi/opencv/opencv_contrib-3.4.10/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp"

重新编译 sudo make

完成后

1 // 安装2 sudo make install3  4 // 更新动态链接库5 sudo ldconfig

设置库的路径,相当于windows下的环境变量,便于使用OpenCV库,也可以不进行设置,使用的时候说明路径也可。例如在编译时说明使用库的路径是 -L/usr/local/lib

2.5配置opencv.conf 

打开opencv.conf配置文件,在末端加入如下内容: 

复制代码

//这里我使用的是树莓派默认的nano,也可以使用vim、gedit.打开opencv.conf文件sudo nano /etc/ld.so.conf.d/opencv.conf//在末端添加如下内容//注意:?表示一个空格,可能原因是有的语言要求最后有一个空格才可以编译通过。/usr/local/lib?//加载一下sudo ldconfig
2.6打开 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

查看版本:

pkg-config --modversion opencv

重启树莓派

复制代码

sudo reboot
3.安装QT3.1直接安装

通过以下命令可直接安装qt

sudo apt-get install qt5-default        //安装默认基本库sudo apt-get install qtcreatorsudo apt-get install qtdeclarative5-dev   //安装QtQuicksudo apt-get install qtmultimedia5-dev   //安装QtMultimediaapt-get install  libqt5sql5-mysql        //安装QtMySQL

这里有五个命令,但通常只用到前面两个命令,可根据需要自行选择。

这种方法安装的qt无法自行选择版本,如果想要特定版本的qt可以用源码的方式编译安装

3.2源码安装3.2.1源码下载

Qt 5.9.9 源码下载:

Qt Creator选择安装4.11.0版本,这是为了与我电脑版本相对应。

Qt Creator 源码下载:

3.2.2 编译

我们这里需要先编译Qt 5.9.9,然后再编译Qt Creator,因为Qt Creator其实是用Qt写的,所以只有我们把Qt编译好了,才可以去编译Qt Creator

交换空间增大

sudo nano /etc/dphys-swapfile

将CON_SWAPSIZE=100修改为CON_SWAPSIZE=1024

然后执行下面的命令:

sudo /etc/init.d/dphys-swapfile stopsudo /etc/init.d/dphys-swapfile start

安装依赖

sudo apt-get build-dep qt4-x11sudo apt-get build-dep libqt5gui5sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 libclipper-dev

如果出现错误可以先更新一下软件

sudo apt-get updatesudo apt-get updrade

解压源码

tar -xvf qt-everywhere-src-5.9.9.tar.xz

新建文件夹用来编译

mkdir buildcd build

下载树莓派的编译配置文件

git clone 

放到Qt的源代码中。具体为:

common/raspberrypi.conf 放到 /qtbase/mkspecs/common/

linux-rpi2-g++ , linux-rpi3-g++ , linux-rpi-g++ , linux-rpi-vc4-g++ , linux-rpi4-v3d-g++ 这4个文件夹放到 /qtbase/mkspecs/中

配置编译选项

这里我新建了一个文件夹qt5.9.9位于/home/pi/qt5.9.9,在里面新建了build文件夹,同时将qt-everywhere-opensource-src-5.9.9移至qt5.9.9文件夹中

进入build文件夹中执行下面的命令:

PKG_CONFIG_LIBDIR=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/share/pkgconfig \/home/pi/qt5.9.9/qt-everywhere-opensource-src-5.9.9/configure -platform linux-rpi4-v3d-g++ \-D__ARM_ARCH_5TEJ__ \-v \-opengl es2 -eglfs \-no-gtk \-opensource -confirm-license -release \-reduce-exports \-force-pkg-config \-nomake examples -no-compile-examples \-skip qtwayland \-skip qtwebengine \-no-feature-geoservices_mapboxgl \-qt-pcre \-no-pch \-ssl \-evdev \-system-freetype \-fontconfig \-glib \-prefix /opt/Qt5.9 \-qpa eglfs \-qt-xcb

注意:大家的树莓派版本可能不一样,如果是4B,则选择linux-rpi4-v3d-g++ 编译,如果是3B,则选择linux-rpi3-g++ 编译,以此类推。如果没有错误,会出现跟下面的图片基本一致:

3.3QT下配置opencv

在pro文件中添加如下代码:

INCLUDEPATH +=usr/local/include/opencv \              usr/local/include/opencv2LIBS +=/usr/local/lib/libopencv_*

即如下图所示:

卸载QT

sudo apt purge qt5*

标签: #树莓派重启进去不了桌面