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

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

suiw9 2024-11-14 19:11 30 浏览 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*

相关推荐

5款Syslog集中系统日志常用工具对比推荐

一、为何要集中管理Syslog?Syslog由Linux/Unix系统及其他网络设备生成,广泛分布于整个网络。因其包含关键信息,可用于识别网络中的恶意活动,所以必须对其进行持续监控。将Sys...

跨平台、多数据库支持的开源数据库管理工具——DBeaver

简介今天给大家推荐一个开源的数据库管理工具——DBeaver。它支持多种数据库系统,包括Mysql、Oracle、PostgreSQL、SLQLite、SQLServer等。DBeaver的界面友好...

强烈推荐!数据库管理工具:Navicat Premium 16.3.2 (64位)

NavicatPremium,一款集数据迁移、数据库管理、SQL/查询编辑、智能设计、高效协作于一体的全能数据库开发工具。无论你是MySQL、MariaDB、MongoDB、SQLServer、O...

3 年 Java 程序员还玩不转 MongoDB,网友:失望

一、什么场景使用MongoDB?...

拯救MongoDB管理员的GUI工具大赏:从菜鸟到极客的生存指南

作为一名在NoSQL丛林中披荆斩棘的数据猎人,没有比GUI工具更称手的瑞士军刀了。本文将带你围观五款主流MongoDB管理神器的特性与暗坑,附赠精准到扎心的吐槽指南一、MongoDBCompass:...

mongodb/redis/neo4j 如何自己打造一个 web 数据库可视化客户端?

前言最近在做neo4j相关的同步处理,因为产线的可视化工具短暂不可用,发现写起来各种脚本非常麻烦。...

solidworks使用心得,纯干货!建议大家收藏

SolidWorks常见问题...

统一规约-关乎数字化的真正实现(规范统一性)

尽管数字化转型的浪潮如此深入人心,但是,对于OPCUA和TSN的了解却又甚少,这难免让人质疑其可实现性,因为,如果缺乏统一的语义互操作规范,以及更为具有广泛适用的网络与通信,则数字化实际上几乎难以具...

Elasticsearch节点角色配置详解(Node)

本篇文章将介绍如下内容:节点角色简介...

产前母婴用品分享 篇一:我的母婴购物清单及单品推荐

作者:DaisyH8746在张大妈上已经混迹很久了,有事没事看看“什么值得买”已渐渐成了一种生活习惯,然而却从来没有想过自己要写篇文章发布上来,直到由于我产前功课做得“太过认真”(认真到都有点过了,...

比任何人都光彩照人的假期!水润、紧致的肌肤护理程序

图片来源:谜尚愉快的假期临近了。身心振奋的休假季节。但是不能因为这种心情而失去珍贵的东西,那就是皮肤健康。炙热的阳光和强烈的紫外线是使我们皮肤老化的主犯。因此,如果怀着快乐的心情对皮肤置之不理,就会使...

Arm发布Armv9边缘AI计算平台,支持运行超10亿参数端侧AI模型

中关村在线2月27日消息,Arm正式发布Armv9边缘人工智能(AI)计算平台。据悉,该平台以全新的ArmCortex-A320CPU和领先的边缘AI加速器ArmEthos-U85NPU为核心...

柔性——面向大规模定制生产的数字化实现的基本特征

大规模定制生产模式的核心是柔性,尤其是体现在其对定制的要求方面。既然是定制,并且是大规模的定制,对于制造系统的柔性以及借助于数字化手段实现的柔性,就提出了更高的要求。面向大规模定制生产的数字化业务管控...

创建PLC内部标准——企业前进的道路

作者:FrankBurger...

标准化编程之 ----------- 西门子LPMLV30测试总结

PackML乃是由OMAC开发且被ISA所采用的自动化标准TR88.00.02,能够更为便捷地传输与检索一致的机器数据。PackML的主要宗旨在于于整个工厂车间倡导通用的“外观和感觉”,...

取消回复欢迎 发表评论: