2020系统综合实践 第6次实践作业
每个人各自写出
第一,说明你此前对于树莓派的认识程度,是闻所未闻还是只听其名不知其用途,亦或是已经了解熟悉。
- 叶琦熠:之前有听说过但没接触过树莓派,就像其他任何一台运行Linux 系统的台式计算机或者便携式计算机那样。
- 周鑫煌:从硬件相关专业的同学那听说过树莓派,应该就像是台小型的计算机,可以自己进行定制一些奇奇怪怪的功能。
- 翟鑫亮:在上这个实验课之前我还是从来没有听过树莓派这个名词,咋一听还蛮好吃的。请原谅我的孤陋寡闻。
第二,查找相关资料,写下你认为的树莓派可以用来做什么,如果你有需要打算用它来做什么。
- 叶琦熠:利用Raspberry Pi 可以做很多事情,利用Raspberry Pi 可以编辑Office 文档、浏览网页、做一个小型服务器等等。将来打算做一个小型的人脸识别器。
- 周鑫煌:树莓派可以作为各种电子装置控制中心或者提供人工智能相关的硬件支持,可以说是能够作为任何机器人的大脑。希望接下来可以利用它做一些图像识别相关的东西。
- 翟鑫亮:无线热点,简易自制笔记本,WIFI小车,监控拍摄,搭建网站……
系统烧录和备份
通过查找相关资料,由小组共同完成树莓派的系统烧录和备份
在官网中下载镜像,按需求下载(选择有桌面环境)
下载链接
选择好要写入的设备和镜像点击写入进行系统烧录
编辑配置文件
将配置文件和ssh(无后缀)放入sd卡根目录
选择要进行备份的设备和映像文件保存路径点击读取进行备份
生成的镜像备份(.img)
访问树莓
在局域网中,通过ssh和vnc远程桌面完成树莓派的访问
SSH
配置wpa_supplicant.conf文件中的WiFi信息连接到路由器上,使得能够使用ssh访问树莓派
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="WiFi名"
psk="WiFi密码"
priority=1
}
network={
ssid="WiFi名"
psk="WiFi密码"
priority=2
}
查看ip地址
树莓派的初始账号密码
username:pi
password:raspberry
连接成功
VNC
启动树莓派的VNC服务
sudo raspi-config
# 之后依次选择 Interfacing Options -> VNC -> Yes
使用VNC Viewer连接到树莓派
VNC Viewer下载地址
完成注册输入账号密码后便成功连接到树莓派。
接入摄像头
树莓派有很多扩展接口,而摄像头也是其中一个非常重要的扩展部件,学习树莓派摄像头模块picamera的使用方法,实现使用python代码控制摄像头,以及通过vlc实时读取摄像头捕获的影像。
摄像头模块安装
- 将摄像头排线露出金属的部分背对网孔和usb接口,即另一面的蓝色塑料封皮正对网孔和usb接口
- 小心地将接线板上的黑色塑料往上拉(请务必保证电源关闭,手指干燥)
- 将排线插入,黑色塑料往下压紧排线
- 开机,使用sudo raspi-config,选择interfacing opinions,选择Camera,并Enable
- Finish退出配置
- 重启
使用命令控制摄像头
使用命令控制摄像头
-
拍照—raspistill
拍摄一张照片,保存在桌面,命名为image.jpg,等待几秒后,桌面就会出现jpg文件
pi@raspberrypi:~ $ raspistill -o Desktop/image.jpg
# 增加参数修改照片的大小
pi@raspberrypi:~ $ raspistill -o Desktop/image-small.jpg -w 640 -h 480
# 输入raspistill直接回车可查询raspistill命令其他参数
-
摄像—raspivid
最直接的参数 -t设置拍摄时间 -w -h设置分辨率宽和高
pi@raspberrypi:~ $ raspivid -o Desktop/video.h264 -t 5000 -w 1024 -h 768
#时长5000毫秒、分辨率为1024x768的视频,保存在桌面,命名为video.h264
使用Python程序控制摄像头
使用Python程序控制摄像头需要使用PiCamera库
打开Raspberry Pi自带的Thonny Python IDE,新建camera.py文件,文件命名不能用PiCamera.py
- 预览摄像画面(仅在接入显示屏幕有效)
from picamera import PiCamera
from time import sleep
camera = PiCamera()
# Rotate by 180 degrees when the camera is upside-down
camera.rotation = 180 #预览稍微透视,以便在预览打开时查看程序中是否出现错误
camera.start_preview(alpha=200) # Make the camera preview see-through by setting an alpha level from 0 to 255
sleep(5)
camera.stop_preview()
-
照相和录像
在拍照前,最好让摄像头sleep至少2秒,使之能够感光
将capture()改成start_recording()和stop_recording()就可控制摄像头拍摄录像了
from picamera import PiCamera
from time import sleep
#初始化参数
camera = PiCamera()
# Rotate by 180 degrees when the camera is upside-down
camera.rotation = 180
#设置alpha方便拍摄时观察错误提示
camera.start_preview(alpha=200) # Make the camera preview see-through by setting an alpha level from 0 to 255
#预留感光时间
sleep(5)
# Take a picture and save as /home/pi/Desktop/image.jpg\'
camera.capture(\'/home/pi/Desktop/image.jpg\')
#Take a vedio and its length is 5 s
camera.start_recording(\'/home/pi/Desktop/video.h264\')
sleep(5)
camera.stop_recording()
camera.stop_preview()
- 更多设置
*PiCamera库*提供了很多关于图像和摄像头预览的设置,并且两者是分开的,即一部分只对拍摄的画面有效,另一部分只对预览有效
-
- 分辨率 resolution
图片最大是2592×1944 视频最大是1920×1080,最小是64×64 - 帧数 framerate
- 图像中增加文本 annotate_text
- 图像文本大小 annotate_text_size,范围:6到160,默认32
- 图像文本颜色 import Color,annotate_background 和 annotate_foreground
- 摄像头预览亮度修改 brightness,范围:0到100,默认50
- 摄像头预览对比度 contrast
- 其他参考
- 分辨率 resolution
from picamera import PiCamera, Color
from time import sleep
#初始化参数
camera = PiCamera()
camera.rotation = 180
camera.resolution = (1024, 768)
camera.framerate = 15
#图片里增加文本
camera.start_preview()
camera.brightness = 70
camera.annotate_background = Color(\'blue\')
camera.annotate_foreground = Color(\'yellow\')
camera.annotate_text = "Hello world!"
camera.annotate_text_size = 30
sleep(5)
camera.capture(\'/home/pi/Camera/pic.jpg\')
camera.stop_preview()
#实现摄像头预览亮度递增效果
camera.start_preview()
for i in range(5):
camera.annotate_text = "Brightness: %s" % i
camera.brightness = i*20
sleep(0.1)
camera.capture(\'/home/pi/Camera/brightness%s.jpg\' % i)
camera.stop_preview()
#实现摄像头预览对比度递增效果
camera.start_preview()
for i in range(5):
camera.annotate_text = "Contrast: %s" % i
camera.contrast = i*20
sleep(0.1)
camera.capture(\'/home/pi/Camera/contrast%s.jpg\' % i)
camera.stop_preview()
基于vlc的Raspberry Pi摄像头实时监控
$ sudo apt-get install vlc #Raspberry Pi系统自带了#-o - 输出到stdout,-t 0不暂停立即获取流, 640x360,25帧/s,-rot 180画面旋转180度(用了支架摄像头画面倒过来了)
$ sudo raspivid -o - -rot 180 -t 0 -w 480 -h 360 -fps 25|cvlc -vvv stream:///dev/stdin --sout \'#standard{access=http,mux=ts,dst=:8090}\' :demux=h264
在与Raspberry Pi在同一局域网内的其他设备上打开媒体->网络串流->输入http://PI的IP地址:8090查看实时的网络监控了。
默认大概5秒,可以改变VLC的参数,大幅降低延时。
–udp-caching=500 延时0.5秒
- VLC推流
- WindowsVLC 打开串流
- WindowsVLC实时监控
记录遇到的问题和解决方法,提供小组成员名单以及在线协作的图片
负责操作的同学应向组内其他成员分享操作过程和结果,分享形式包括但不限于直播、视频、图片等。
- 此次实验不算很难,总体来说算是个验证性实验。但是有些关键步骤出问题还是很麻烦。比如我们在找树莓派IP地址时就花费了不少功夫,最后还是成功找到了
- 在进行VNC连接树莓派时出现了无法连接桌面的错误,百度之后发现是分辨率在搞鬼,把分辨率改为屏幕大小后顺利进入
- 此次的树莓派摄像无论是拍照还是录像都是反镜像的,所以可以提前在命令行或python文件里面添加旋转参数设置
- 直播互动
- 小组成员名单
学号 | 姓名 |
---|---|
031702337 | 叶琦熠 |
031702525 | 周鑫煌 |
031702316 | 翟鑫亮 |