树莓派3b+ opencv3.4.1 QT USB摄像头 串口配置

作者:SunnyFHY    发布于:

树莓派3b+ OpenCV3.4.1 USB摄像头 串口配置教程

本来这个教程写了个开头不打算写完的,感觉没啥意思。结果周末的时候配串口把系统搞崩了,所以重装就顺便记一下了。

首先记一下出错:配串口的时候在config文件里加了一行代码之后重启出现了kernel panic-not syncing:attempted to kill init!之后科协的同学教我把存储卡里的boot文件夹在PC上打开找到config.txt删掉多加的那行代码就可以重启了。不过后来始终配不起来串口,一改config就开始崩,反反复复操作了好几次最后直接boot文件夹都windows不可识别了。树莓派也重启不了啦。一直重装一直爽,愿天堂不需要编译OpenCV。

材料及软件清单:

Raspberry Pi 3b+ TF存储卡(大于8G) 读卡器 / DiskImager VNCViewer(csdn上都有安装包)

树莓派系统(Paspbian)下载及烧录:

1.进入https://www.raspberrypi.org/

点击导航栏Downloads

1550199513711

2.选择Raspbian

1550199744281

3.下载系统镜像压缩包(Dwonload ZIP),左上为带图形界面及推荐软件版,右上带图形界面,左下纯命令行

1550199826769

4.下载后解压至任意路径(注意不能含有中文路径

​ 得到后缀为img的镜像文件

5.接下来打开 DiskImager烧录系统

Device选择读卡器的U盘、ImageFile选择刚刚解压img镜像文件路径

点击Write

1550200210722

等待出现Write Successfully弹窗

6.插入烧录好Paspbian的存储卡,连接电源和显示器,等待开机。

注意:初始系统设置弹窗注意看提示语,别一路NEXT,赶时间最后一步需要下载东西的check for update可以跳过

vnc server远程PC桌面登录树莓派(如果有需要的话)

其实vnc后期不能远程显示摄像头的图像框的,而且有时候画面还会卡。

1.首先确保PC和树莓派处在同一个网络下,在树莓派的命令行里输入vncserver

2.打开PC端的vncviewer输入树莓派显示的ip地址

1551107426897

3.输入用户名和密码,用户名默认pi,密码为第一次开机自己设定的登录密码。

1551107469951

4.获得PC远程图形桌面登录。

1551107570897

系统汉化教程(不存在的,这样编译报错都报中文我怎么查解决方案)

NEXT——->

完整更新镜像源

1.备份

1
2
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sources.list.d/raspi.list.bak

2.修改软件更新源,用中科大站点:

1
sudo nano /etc/apt/sources.list

修改后如下:

1
2
3
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ stretch main contrib non-free rpi

ctrl+o 保存 → 回车 确认 → ctrl+x 退出


3.再修改系统更新源:

1
sudo nano /etc/apt/sources.list.d/raspi.list

同样修改首行网址,修改后如下:

1
2
3
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ stretch main ui
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspberrypi.org/debian/ stretch main ui

ctrl+o 保存 → 回车 确认 → ctrl+x 退出


4.更新

1
sudo apt-get update ; sudo apt-get upgrade ; sudo apt-get dist-upgrade ; sudo rpi-update

此处为更新软件源列表、软件版本和内核版本,因为更新内容比较多,所以耗时长些(中间会需要多次选择y/n,10分钟警告+意外中断风险,需要关掉vnc)

qt5下载及编译工具配置

  1. 树莓派安装QT非常简单,只需要两句话,打开终端,输入以下命令
1
2
sudo apt-get install qt5-default
sudo apt-get install qtcreator
  1. 一定要确保第一个安装成功了再输入第二个命令,如果安装第一个时提示需要xx依赖于xx,那么就把第一个命令改为
1
sudo aptitude install qt5-default

3.然后再输入上面的第二个命令

4.之后按下图进行编译工具配置

img

1551144134510

compiler path: /usr/bin/arm-linux-gnueabihf-gcc

1551144086897

wiringpi配置

1.安装git工具

1
sudo apt-get install git-core

2.克隆wiringpi源码到本地并编译安装

1
2
3
4
5
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

3.更新wiringpi库

1
2
3
cd wiringPi
git pull origin

串口配置(把这个放在前面,崩了我也不心疼,OpenCV编译放后面)

1.将树莓派的硬件串口与mini串口默认映射对换

简单来说:硬件串口由硬件实现,有单独波特率时钟源,性能高,可靠,而mini串口要依附CPU内核提供时钟。因此我们要用硬件串口,但是树莓派3b的硬件串口默认连接的是蓝牙,所以我们要改一下,把蓝牙映射到mini串口上,而释放硬件串口。

首先查看有没有相关文件

命令行 cd /boot/overlays

可以看到有 README 和 pi3-miniuart-bt-overlay.dtb 或者是 pi3-miniuart-bt.dtb ,后面的缺了(overlay)但是在README中的解释是相同的,因此,认为是同一文件。如果没有的话,参考博客 给出链接点击 http://ukonline2000.com/wp-content/uploads/2016/03/ 下载。

img

img

README文件中说明了此文件的功能是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO14&15引脚中。

2.查看并修改串口映射关系

终端输入 ls -l /dev

红框里面表示串口映射,有的可能只显示1个,没关系,修改之后两个就都显示出来了。

img

现在来修改

命令行sudo nano /boot/config.txt

在该文件中加一行代码 dtoverlay=pi3-miniuart-bt

img

然后保存文件,重启树莓派。

然后我们再次查看 命令行 ls -l /dev 此时两个都有了并且对调了

img

可以看出,硬件串口(ttyAMA0)映射到了GPIO Tx(14) Rx(15) 引脚上。

3.禁用串口的控制台功能。

前面步骤已经交换了硬件串口与mini串口的映射关系,但是,现在还不能使用树莓派串口模块与电脑进行通信,因为,树莓派io口引出串口默认是用来做控制台使用的,即是为了用串口控制树莓派,而不是通信。所以我们要禁用此默认设置。

两个命令

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

然后命令行

sudo nano /boot/cmdline.txt
删除语句 console=serial0,115200

保存之后内容如下,有的可能不一样

img

然后重启树莓派,

配置结束。

接下来我们先配视觉处理环境,最后进行OpenCV、QT和串口的联合测试。

OpenCV和摄像头配置

首先安装构建OpenCV的相关工具:

1
sudo apt-get install build-essential cmake git pkg-config

之后安装常用图像工具包:

1
2
3
4
5
6
7
8
// 安装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

再安装视频I/O包:

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

下面安装gtk2.0(此处如果不换源的话几乎100%失败,所以安装好系统后马上更换源):

1
sudo apt-get install libgtk2.0-dev

然后是优化函数包

1
sudo apt-get install libatlas-base-dev gfortran

到此为止,需要安装的依赖项全部完成了,接下来开始安装Opencv,我们采用源码编译的方式安装:(要很久= =)

1
2
3
4
5
#下载OpenCV
wget -O opencv-3.4.1.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
# 解压OpenCV
unzip opencv-3.4.1.zip

前面已经把源代码解压了,所以现在要切换到源码的文件夹:

1
cd opencv-3.4.1

新建一个名为build的文件夹用来存放cmake编译时产生的临时文件:

1
2
3
mkdir build
// 进入builf文件夹
cd build

设置cmake编译参数,安装目录默认为/usr/local,在终端输入:

1
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

此过程中会下载部分文件,由于是外网,所以往往耗费较长时间,预计在十五分钟左右,请耐心等待

cmake没问题的话,就可以继续下面的步骤,正式编译,继续输入:

1
2
3
4
5
6
// 编译,以管理员身份,否则容易出错,-j4用来加快编译速度
sudo make -j4
// 安装
sudo make install
// 更新动态链接库
sudo ldconfig

在用opencv调用前,请先完成以下操作

1551143333503

1551143406955

1
sudo nano /etc/modules-load.d/rpi-camera.conf

之后在最后一行上加上bcm2835-v4l2,这样就可以在opencv中调用官方的摄像头了

OpenCV、QT和串口联合测试

打开QtCreator,点击File,选择New File or Project,选择None-Qt Project,选择Plain C++ Project,点击choose ,然后基本都选默认的就行

树莓派3B+安装QT及配置Opencv过程-杨幽科技

项目建立完成后在左栏就会看到一个*.pro文件,修改.pro文件中的内容,如下(直接复制即可):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
QT += core
QT -= gui
TARGET = opencv_test
CONFIG += console
CONFIG -= app_bundle
INCLUDEPATH += /usr/local/include \
/usr/local/include/opencv \
/usr/local/include/opencv2
LIBS += /usr/local/lib/libopencv_calib3d.so //usr/local/lib/libopencv_core.so //usr/local/lib/libopencv_features2d.so //usr/local/lib/libopencv_flann.so //usr/local/lib/libopencv_highgui.so //usr/local/lib/libopencv_imgcodecs.so //usr/local/lib/libopencv_imgproc.so //usr/local/lib/libopencv_ml.so //usr/local/lib/libopencv_objdetect.so //usr/local/lib/libopencv_photo.so //usr/local/lib/libopencv_shape.so //usr/local/lib/libopencv_stitching.so //usr/local/lib/libopencv_superres.so //usr/local/lib/libopencv_videoio.so //usr/local/lib/libopencv_video.so //usr/local/lib/libopencv_videostab.so
TEMPLATE = app
SOURCES += main.cpp
LIBS +=-lwiringPi #这个是wiringPi的库

main.cpp内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include <opencv2/opencv.hpp>
#include <string.h>
#include <wiringPi.h>
#include <wiringSerial.h>
using namespace cv;
//-----------------------------------【main( )函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//-------------------------------------------------------------------------------------------------
int main( )
{
int fd;
char str[6],str1[6];
if(wiringPiSetupSys()<0)return 1; //初始化wiringPi
sprintf(str,"%s%s%s","X","110","R");
sprintf(str1,"%s%s%s","Y","220","R");//字串拼接,%s可替換成int/float
//【1】从摄像头读入视频
VideoCapture capture(0);
//【2】循环显示每一帧
while(1)
{
Mat frame; //定义一个Mat变量,用于存储每一帧的图像
capture>>frame; //读取当前帧
imshow("读取视频",frame); //显示当前帧
waitKey(10);
if((fd=serialOpen("/dev/ttyAMA0",9600))<0)
{
int time = millis();
printf("serial doesn't open,return -1,time is %d",time);
return 1;
}
serialPrintf(fd,str);
serialPrintf(fd,str1);
int c = waitKey(10);
if ((char)c == 27) { break; } // escape
}
return 0;
}

结果:测试成功!!!

硬件连接不赘述,演示效果自己瞧,总之成功!!!

好了终于复活了。啊我活了,啊我又死了。过一会还要跑操,不过早上的课这周还没开始,所以要继续摸图像处理。我写这篇东西有啥意思呢?我现在就备份镜像,以后再也不白手又起家,卷土再重来了。配完环境的人,真的还能撑住写代码吗???

附备份镜像教程:

1.先右键新建一个文本文档,把它后缀名改成img。

2.使用diskimager软件选中刚刚新建的img文件路径。

3.点击read键将镜像读出。

参考网址:https://ayangyou.com/2019/01/24/raspberrypi_qt_opencv/

https://blog.csdn.net/qq_29781403/article/details/85093062

https://blog.csdn.net/u014415522/article/details/80645651

https://blog.csdn.net/qq_36326623/article/details/79780061

https://www.itread01.com/content/1546097048.html

format_list_numbered

(无)

  1. 1. 树莓派3b+ OpenCV3.4.1 USB摄像头 串口配置教程
    1. 1.1. 材料及软件清单:
    2. 1.2. 树莓派系统(Paspbian)下载及烧录:
    3. 1.3. vnc server远程PC桌面登录树莓派(如果有需要的话)
    4. 1.4. 系统汉化教程(不存在的,这样编译报错都报中文我怎么查解决方案)
    5. 1.5. NEXT——->
    6. 1.6. 完整更新镜像源
      1. 1.6.0.1. 1.备份
      2. 1.6.0.2. 2.修改软件更新源,用中科大站点:
      3. 1.6.0.3. 3.再修改系统更新源:
    7. 1.6.1. 4.更新
  2. 1.7. qt5下载及编译工具配置
  3. 1.8. wiringpi配置
  4. 1.9. 串口配置(把这个放在前面,崩了我也不心疼,OpenCV编译放后面)
  5. 1.10. OpenCV和摄像头配置
  6. 1.11. OpenCV、QT和串口联合测试
  7. 1.12. 结果:测试成功!!!
vertical_align_top

Copyright © 2017 SunnyFHY

Powered by Hexo & Theme - Vateral