树莓派入门及应用
写在前面!
在做项目的时候发现32mini的速度不够,若要实现实时图传相当困难,于是老师建议采用树莓派来解决图传问题,树莓派是个非常强大的小型电脑,GPU 支持 OpenGL ES 3.x、硬件加速的 OpenVG,和高至 4Kp60 HEVC 视频硬件解码,嗯我其实也不知道啥意思反正就是很厉害,所以着手运用树莓派,但是本人相当的笨,不知道从哪里可以找到关于树莓派的完整教程(就是不想学所以啥都不想看),所以在查阅了多方资料和自己采坑之后,决定写一版树莓派的文档~以便以后忘记时查看,也便于和我一样的小伙伴学习!
(这里致敬一切我查阅过的资料和作者)
哦对了!如果你买的是成套的树莓派,也许会有键盘啊显示屏啊的,这样连接上就是一个真真正正完整的电脑了,网上也有教程会简单很多。但是呜呜呜我没有,我只有一块板子,和现卖的SD卡(也就是你必须得有SD卡),所以我的文档是在无外接显示器的情况下单纯用电脑操作的~
烧录!
树莓派是一个小型计算机啦,板子上CPU、GPU、无线通信(也就是可以自动连WiFi)等等吧这个你可以去看树莓派新手指南~但是没有操作系统的单片机!是没有灵魂的!就是一堆铁片片!因此我们需要为自己的单片机装上操作系统,让他变成真正的电脑。
将树莓派的操作系统烧录进16GB以上的SD卡!!!
你需要读卡器和SD卡!
如果你的网速可以支持你瞎搞的话:
去官网链接: https://www.raspberrypi.org/software/下载官方的这个东西
这是最简单的方法,直接点WRITE就等他烧好就行
如果你那么快网速发现写的时候一直写不进去的时候
如果刚刚的方法你用过了且无法烧录这时候你可能会在电脑上找不到你的SD卡,因为上面的软件会将你的SD卡类似于~锁起来所以如果第一种方法不得行,你可能得先格式化一下(找一下)你的SD卡。
1、格式化SD卡
这里有两种方式可供选择
第一种是在计算机设置里面找磁盘管理
发现磁盘是灰色未分配的情况,因此右键新加卷(有时候会没反应…你多点几次),然后一路默认就好了
一种是利用软件来进行格式化
更改完后弹窗一路默认成是!
这样就能找到你的磁盘了
2、在官网下载压缩包
下载完后还是回到原来的软件里再来一遍!
如果压缩包你也下载不下来或者下载下来后解压错误
恭喜你跟爷一样!啊!!!!!然后我找别人网速快的去下载了安装包然后再来了一遍…
基本设置!
设置WIFI
由于没有显示屏嘛,那么你想用树莓派就得用SSH将你的树莓派和你的电脑远程连接,然后在电脑上进行控制,那么这时候树莓派就需要联网!树莓派内自带无限连接装置也就是如果你将装有配置好操作系统的SD卡插进板子,板子可以自己连上WIFI。这里的WIFI一定要和你的电脑是一个局域网下面才可以,在你的SD卡里面新建两个文件~
注意ssh小写而且文件没有后缀名
后缀名显不显示可以从这里配置
在wpa_supplicant.conf 文件里写下面的这一段话然后保存(注意你这个WIFI必须是和你电脑一个WiFi)
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你的WiFi名"
psk="你的WiFi密码"
key_mgmt=WPA-PSK
priority=1
}
然后你就可以把SD卡搞下来了,插在你的树莓派上然后给树莓派通电
拔下你正在充电的手机,将充电线插到板子上,刚通电的时候绿灯会闪烁,闪烁的绿灯等于板子已经开始读操作系统了。这时候就可以去找你的树莓派是否已经连上WIFI
搭建远程控制树莓派的桌面
你需要去win+r一下然后cmd打开你的命令行窗口
然后找一下你的WIFI
然后下载这个局域网扫描器去找你树莓派的地址
然后这个IP就派上大用场了,你需要下载一个叫putty的软件
然后输入用户名和密码(pi/raspberry)
注意奥这个密码在输入的时候是不显示的,不是你卡住了就是没显示而已,你盲敲上去然后换行就行了
由于要设置远程桌面所以你需要先去下载一个远程桌面软件叫VNC Viewer
然后在等待的时候命令行敲sudo raspi-config
回车进入开始设置桌面
桌面打开之后设置你的分辨率
在网站上所给的方法是
但是实际操作的时候,我并没有找到在advanced options下的resolution(吃了没文化的亏阿西)在我的操作中,这个分辨率是在display options里的
设置好后确定然后你会看到绿灯亮起,这说明已经开始设置了,然后你可以打开当时下载好的远程桌面软件
用ip去查询到你的桌面并打开
直接点OK就行
远程桌面基本设置
在OK完弹出来的warning后页面变成了这样
然后你就可以一路next去设置你的树莓派
按照需求自己设置这里我就不多赘述总之最后更新完成就会重启树莓派就能用啦!
然后我网速还算可以所以直接加载完成,树莓派页面就是中文版的了
如果你的网速并不可以支撑,那么你也可以去设置网络源然后在进行中文包和中文输入法的下载与设置
中文输入法的设置就是在命令行敲入sudo apt-get install scim-pinyin
然后默认安装后重启整体树莓派就行
编译环境!
在树莓派下安装编程所需要的的编译环境,这里有C和python两个语言
C
有关C语言的编译环境,你需要在命令窗口敲
wget https://project-downloads.drogon.net/wiringpi-latest.deb
(如果你联网且网没有问题的话)然后等待他自己下载完成
然后解析安装包sudo dpkg -i wiringpi-latest.deb
但如果你树莓派内没有网或者下载不下来你也可以在电脑上下载好安装包后远程将文件传输给树莓派,这时候你需要下载远程文件传输工具FileZilla然后进行远程传送
在树莓派中运用个geany这个软件进行C语言编程
Python
在树莓派中默认已经安装了python3版本和python编译器的所以可以直接用
摄像头
当前面的都配置的差不多了,重头戏也就开始了,我们需要开始搞摄像头了,由于默认看着文档的有一定的单片机基础,所以那些流水灯啊什么的老生常谈的我就不讲了,直接上项目!
VLC进行图像实时传输
首先我们需要打开摄像头可以让他拍照。将摄像头和树莓派连接。
按照这种链接方法将摄像头进行连接(一定要连接紧)
然后在有两种方法开启摄像头
第一种
这种方式比较繁琐但看起来很牛逼
第二种
可以直接这么打开Camera
这样结束后我建议你用sudo nano /etc/modules
命令进入文件然后加一句话(ctrl+o保存-回车-ctrl+x退出)
然后你可以通过ls -al /dev/ | grep video
指令去查找是否有video
当查找到video后就可以通过raspistill -o image.jpg
命令来截图(注意这个命令没反应就是敲完结束不报错就是对的)
如果图片可以正常显示说明摄像头连接正常,这里一般不会出什么问题
然后就是如何实时将摄像头的拍摄内容显示到pc上
这就需要一个工具VLC
首先用命令去安装一下vlc
sudo apt-get update
sudo apt-get install vlc --fix-missing
sudo apt-get install vlc
然后开启你的VLC(先点开VLC然后放在哪里)
开启后不用管他先用以下命令打开摄像头
sudo raspivid -o - -rot 180 -t 0 -fps 30|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
然后他会出一溜东西
这个时间会久一点需要等待有时候网不好可能传输不了
然后你在返回VLC去打开摄像头
这里注意8080和8090这两个
8080在一开始的时候是无法打开的会报错,然后我用8090试了一下,发现可以打开但是延迟很高
后面又试了一遍发现8090打不开了,换成8080后却打开了,但这时候的视频是反转的但是没有那么高的延迟了
后来发现是命令的问题8090我使用的命令是
sudo raspivid -o - -t 0 -w 640 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8090}' :demux=h264
而8080则是
sudo raspivid -o - -rot 180 -t 0 -fps 30|cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8080}' :demux=h264
发现问题所在就是后面的dst,这两个命令都是在网上找的,当时直接复制粘贴没有管到底是怎么用的,然后细查了一下这段命令,发现其中这些都是有规格的有兴趣的可以去挨个去试一下:
-vf 垂直翻转,也可输入-hf进行水平翻转
-h 视频高度
-w 视频宽度
-o - 输出写到stdout
-t 0 无延时
-fps 每秒传输帧数
dst 网络端口
demux h264视频压缩格式
后来我也找到了其他的命令比如你在打开CLV输入地址的时候会发现下面有一种不是http的写法是叫rtsp如果用rtsp的话就需要用以下命令了
raspivid -o - -t 0 -vf -w 800 -h 400 -fps 24|cvlc -v stream:///dev/stdin --sout ‘#rtp{sdp=rtsp://:8080/}’ :demux=h264
OpenCV调用摄像头
首先以为树莓派自带Python2和Python3所以我建议更改一下默认Python(就是删掉2版本)
https://blog.csdn.net/little_prince729/article/details/107668504
放弃官方给的方法吧!!!让你下依赖包,下压缩包,下各种东西然后编译然后报错!我搞了两天没搞出来!https://segmentfault.com/a/1190000039971816
现在告诉你!!!树莓派4B如何下载OpenCV!只需要一句话五分钟!
首先在刚刚的一切配置都没问题的情况下!sudo apt install python3-opencv
然后就结束了…
没有一点点防备…直接就结束了…我搞了两天啊!几百行命令过去了!多少bug看过了!结果一行解决问题!
不用下什么pycharm也不用下什么乱七八糟的东西!然后你可以测试一下
这里注意!树莓派4B不支持很高的OpenCV版本,所以我这里是3.2.0,也算蛮低的。。。
但是有朋友已经按照别的教程开始搞了而且遇到bug的话我在这里汇总一下我踩过的一些坑(另外用这个教程我并没有配置成功)
https://www.cnblogs.com/gghy/p/11916830.html(这是我原来参照的教程)
首先在安装依赖包的时候你可能会出现这种问题
就是怎么都搞不来
这时候就要注意了,去看一看你第一步换镜像源的时候
他这个地方我电脑默认的是buster但是有的教程上写的是stretch所以一定要注意你的源是不是正确的
然后就是当你确定你的源是正确格式后,如果还出现上述问题,你需要下载一个叫aptitude的软件sudo apt-get install aptitude
后再用sudo aptitude install
软件名来进行下载。这里就不多赘述了~
然后就是在设置编译参数的时候
路径是在Download里面的,在opencv文件夹里去创建build文件夹,然后编译的时候很奇怪我第一次并没有成功,绕了一大圈后什么都没改,再编译却成功了,我认为可能是网的问题或者玄学吧
最后三句话这是成功的标志,一模一样的话说明成功了
后面就是编译过程中
你可能会卡在各种百分点上,一般的百分点大致都是因为网不好或者玄学,有篇文章可以解决这些问题https://blog.csdn.net/qq_45252077/article/details/107638493
最主要的(树莓派4B)可能是百分之九十九或者九十七出现的:
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21769:modules/python3/CMakeFiles/opencv_python3.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
这里上面的文章讲的非常清楚
在编译成功后,通过python3去验证是否安装上的时候也许会报错(这里是安装成功界面)
如果报错的情况下可以通过这个网址去排查错误https://www.jianshu.com/p/7e3b166800a5
这种方法其实很困难,因为你不知道会遇到什么问题,这里我只罗列了我遇到的问题,仅供参考。
当你可以正常用OpenCV的时候,下面这行代码就可以进行OpenCV开启摄像头了
简单粗暴!直接打开MU
复制代码
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
cap.set(3,640) # set Width
cap.set(4,480) # set Height
while(True):
ret, frame = cap.read()
frame = cv2.flip(frame, -1) # Flip camera vertically
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', frame)
cv2.imshow('gray', gray)
k = cv2.waitKey(30) & 0xff
if k == 27: # press 'ESC' to quit
break
cap.release()
cv2.destroyAllWindows()
运行…
然后就可以使用了!