百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

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

liebian365 2024-10-20 09:54 26 浏览 0 评论

为树莓派配置OpenCV及QT

1.安装raspbian系统

1.1下载系统

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

https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit

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

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=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    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 http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi

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

sudo apt-get update 

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

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

2.配置opencv

2.1下载opencv

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

cd

wget https://github.com/Itseez/opencv/archive/3.4.0.zip

wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip

然后解压至想要的位置

2.2安装opencv所需的库

sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y

sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y

2.3编译

设置编译参数

cd /home/pi/Downloads/opencv-3.4.0
mkdir build
cd 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.i
  • boostdesc_bgm_bi.i
  • boostdesc_bgm_hd.i
  • boostdesc_lbgm.i
  • boostdesc_binboost_064.i
  • boostdesc_binboost_128.i
  • boostdesc_binboost_256.i
  • vgg_generated_120.i
  • vgg_generated_64.i
  • vgg_generated_80.i
  • vgg_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 install
3  
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.bashrc
3 
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.安装QT

3.1直接安装

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

sudo apt-get install qt5-default        //安装默认基本库
sudo apt-get install qtcreator
sudo apt-get install qtdeclarative5-dev   //安装QtQuick
sudo apt-get install qtmultimedia5-dev   //安装QtMultimedia
apt-get install  libqt5sql5-mysql        //安装QtMySQL

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

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

3.2源码安装

3.2.1源码下载

Qt 5.9.9 源码下载:http://download.qt.io/archive/qt/5.9/5.9.9/single/qt-everywhere-src-5.9.9.tar.xz

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

Qt Creator 源码下载:https://download.qt.io/official_releases/qtcreator/4.11/4.11.0/qt-creator-opensource-src-4.11.0.tar.gz

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 stop
sudo /etc/init.d/dphys-swapfile start

安装依赖

sudo apt-get build-dep qt4-x11
sudo apt-get build-dep libqt5gui5
sudo apt-get install libudev-dev libinput-dev libts-dev libxcb-xinerama0-dev libxcb-xinerama0 libclipper-dev

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

sudo apt-get update
sudo apt-get updrade

解压源码

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

新建文件夹用来编译

mkdir build
cd build

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

git clone https://github.com/oniongarlic/qt-raspberrypi-configuration.git

放到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/opencv2

LIBS +=/usr/local/lib/libopencv_*

即如下图所示:

卸载QT

sudo apt purge qt5*

相关推荐

看黑客是如何获取你电脑最高权限的,一定要看

在渗透过程中,通过各种方式获取到一枚cmdshell,但是这个shell的权限比较低,无法让我们做我们想要做的一些操作,比如说获取系统密码,获取数据库信息,又或者比如说拿到服务器中的另一个站点的权限,...

是50个常用的Visual Basic代码示例:

以下是50个常用的VisualBasic代码示例:1.声明变量```vb...

电脑系统型号怎么看版本(如何看电脑系统型号)

有时候我们会需要进行查看电脑上安装的windows系统版本及系统版本号,但对于不懂电脑知识的小白来说要怎么查看电脑系统版本信息呢?别着急,有小编在接下来,就将查看电脑系统版本的教程来分享给你们,希望对...

dos命令systeminfo,查看系统启动时间。电脑卡慢,win10怎么了?

最近一段时间,有几个反应电脑卡慢的,都是windows10的系统。询问得知每天电脑有关机,打开任务管理器,内存使用量达到百分之九十多,而程序只打开微信、wps、360浏览器。cmd窗口运行命令syst...

systeminfo命令:全面解析系统信息!

你是否曾想过,仅凭一条简单的命令,就能深入了解计算机的"内心世界"?是不是有点不可思议?那么,让我们一起探寻这个神奇的命令,揭开它背后的奥秘吧!它能提供的信息超乎你的想象,从操作系统到硬件配置,再到驱...

电脑序列号怎么查询?只需两行命令一键查询

当我们的电脑出问题需要保修的时候,需要查询到电脑的型号和序列号才更便于进行下一步的操作,有包装盒的朋友还可以在包装盒上查询,笔记本用户可以在电脑底部标签上查询,没有包装盒和标签破损的用户就无从下手了。...

快速显示系统信息:Systeminfo命令详解

Systeminfo命令是windows系统中显示系统信息的命令,此命令可以显示出计算机的操作系统的详细配置信息,包括操作系统配置、安全信息、产品ID和硬件属性(如RAM、磁盘空间和网卡)。使用...

dos命令systeminfo图文教程,显示操作系统配置信息msinfo32

大家好,我是老盖,首先感谢观看本文,本篇文章做的有视频,视频讲述的比较详细,也可以看我发布的视频。今天我们学习systeminfo命令,该工具显示本地或远程机器(包括服务包级别)的操作系统配置的信息,...

基于uniapp+vue3跨端仿制chatgpt实例uniapp-chatgpt

#夏日生活打卡季#...

原创新作uniapp+vue3+pinia2高仿微信App聊天

前段时间有给大家分享一个flutter3.x桌面端os系统。今天再分享一款最新原创之作uniapp-vue3-wechat聊天实例。uni-vue3-wechat采用...

UniApp开发的设备适配(uniapp服务器配置)

UniApp是一个跨平台开发框架,支持多端应用(如H5、小程序、iOS、Android等)。由于不同设备的屏幕尺寸、分辨率、操作系统等存在差异,设备适配是开发过程中需要重点关注的问题。以下是Uni...

如何用服务器搭建自己的个人网站(自己服务器怎么做网站)

这篇教程主要是告诉大家如何利用TCP和HTTP协议来完成网站的搭建。首先你需要有C/C++语言基础,且有服务器、客户端概念,如果你了解TCP或者HTTP协议的话,那么将会帮助你更快的学会如何搭建个人网...

大话C语言:字符数组(c语言字符数组教学视频)

1字符数组概述C语言中没有字符串这种数据类型,可以通过char的数组来替代。数字0(和字符'\0'等价)结尾的char数组就是一个字符串,字符串是一种特殊的char的数组。...

源码分享:在pdf上加盖电子签章(pdf怎么加电子签章)

在pdf上加盖电子签章,并不是只是加个印章图片,。而是要使用一对密钥中的私钥对文件进行签字。为啥要用私钥呢?很简单,因为公钥是公开的,其他人才可以用公钥为你证明,这个文件是你签的。这就是我们常说的:私...

C语言wcstombs函数详解:宽字符字符串到多字节的「翻译官」

核心定位wcstombs是C语言中用于将宽字符字符串转换为多字节字符串的「翻译官」,它能将宽字符(wchar_t)转换为多字节字符(如UTF-8编码的中文)。就像一位翻译官,它能将一种语言(宽字符...

取消回复欢迎 发表评论: