树莓派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
2.选择Raspbian
3.下载系统镜像压缩包(Dwonload ZIP),左上为带图形界面及推荐软件版,右上带图形界面,左下纯命令行
4.下载后解压至任意路径(注意不能含有中文路径)
得到后缀为img的镜像文件
5.接下来打开 DiskImager烧录系统
Device选择读卡器的U盘、ImageFile选择刚刚解压img镜像文件路径
点击Write
等待出现Write Successfully弹窗
6.插入烧录好Paspbian的存储卡,连接电源和显示器,等待开机。
注意:初始系统设置弹窗注意看提示语,别一路NEXT,赶时间最后一步需要下载东西的check for update可以跳过
vnc server远程PC桌面登录树莓派(如果有需要的话)
其实vnc后期不能远程显示摄像头的图像框的,而且有时候画面还会卡。
1.首先确保PC和树莓派处在同一个网络下,在树莓派的命令行里输入vncserver
2.打开PC端的vncviewer输入树莓派显示的ip地址
3.输入用户名和密码,用户名默认pi,密码为第一次开机自己设定的登录密码。
4.获得PC远程图形桌面登录。
系统汉化教程(不存在的,这样编译报错都报中文我怎么查解决方案)
NEXT——->
完整更新镜像源
1.备份
|
|
2.修改软件更新源,用中科大站点:
|
|
修改后如下:
|
|
ctrl+o 保存 → 回车 确认 → ctrl+x 退出
3.再修改系统更新源:
|
|
同样修改首行网址,修改后如下:
|
|
ctrl+o 保存 → 回车 确认 → ctrl+x 退出
4.更新
|
|
此处为更新软件源列表、软件版本和内核版本,因为更新内容比较多,所以耗时长些(中间会需要多次选择y/n,10分钟警告+意外中断风险,需要关掉vnc)
qt5下载及编译工具配置
- 树莓派安装QT非常简单,只需要两句话,打开终端,输入以下命令
|
|
- 一定要确保第一个安装成功了再输入第二个命令,如果安装第一个时提示需要xx依赖于xx,那么就把第一个命令改为
|
|
3.然后再输入上面的第二个命令
4.之后按下图进行编译工具配置
compiler path: /usr/bin/arm-linux-gnueabihf-gcc
wiringpi配置
1.安装git工具
|
|
2.克隆wiringpi源码到本地并编译安装
|
|
3.更新wiringpi库
|
|
串口配置(把这个放在前面,崩了我也不心疼,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/ 下载。
README文件中说明了此文件的功能是将树莓派3的蓝牙切换到mini串口(ttyS0),并且恢复硬件串口(ttyAMA0)到GPIO14&15引脚中。
2.查看并修改串口映射关系
终端输入 ls -l /dev
红框里面表示串口映射,有的可能只显示1个,没关系,修改之后两个就都显示出来了。
现在来修改
命令行sudo nano /boot/config.txt
在该文件中加一行代码 dtoverlay=pi3-miniuart-bt
然后保存文件,重启树莓派。
然后我们再次查看 命令行 ls -l /dev 此时两个都有了并且对调了
可以看出,硬件串口(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
保存之后内容如下,有的可能不一样
然后重启树莓派,
配置结束。
接下来我们先配视觉处理环境,最后进行OpenCV、QT和串口的联合测试。
OpenCV和摄像头配置
首先安装构建OpenCV的相关工具:
|
|
之后安装常用图像工具包:
|
|
再安装视频I/O包:
|
|
下面安装gtk2.0(此处如果不换源的话几乎100%失败,所以安装好系统后马上更换源):
|
|
然后是优化函数包
|
|
到此为止,需要安装的依赖项全部完成了,接下来开始安装Opencv,我们采用源码编译的方式安装:(要很久= =)
|
|
前面已经把源代码解压了,所以现在要切换到源码的文件夹:
|
|
新建一个名为build的文件夹用来存放cmake编译时产生的临时文件:
|
|
设置cmake编译参数,安装目录默认为/usr/local,在终端输入:
|
|
此过程中会下载部分文件,由于是外网,所以往往耗费较长时间,预计在十五分钟左右,请耐心等待
cmake没问题的话,就可以继续下面的步骤,正式编译,继续输入:
|
|
在用opencv调用前,请先完成以下操作
|
|
之后在最后一行上加上bcm2835-v4l2,这样就可以在opencv中调用官方的摄像头了
OpenCV、QT和串口联合测试
打开QtCreator,点击File,选择New File or Project,选择None-Qt Project,选择Plain C++ Project,点击choose ,然后基本都选默认的就行
项目建立完成后在左栏就会看到一个*.pro文件,修改.pro文件中的内容,如下(直接复制即可):
|
|
main.cpp内容如下
|
|
结果:测试成功!!!
硬件连接不赘述,演示效果自己瞧,总之成功!!!
好了终于复活了。啊我活了,啊我又死了。过一会还要跑操,不过早上的课这周还没开始,所以要继续摸图像处理。我写这篇东西有啥意思呢?我现在就备份镜像,以后再也不白手又起家,卷土再重来了。配完环境的人,真的还能撑住写代码吗???
附备份镜像教程:
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