本文主要是介绍树莓派开始,玩转Linux11:你是我的眼,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
树莓派开始,玩转Linux11:你是我的眼
树莓派官方出品有小型摄像头,用于录制视频或拍摄图片。树莓派加上小型摄像头,就构成了一个好玩的移动摄影装置。
最新的官方摄像头版本是V2,配有8M像素的Sony IMX219感光板,可以满足一般的摄影摄像需求。V2摄像头又可以分为两款。
一款摄像头用于正常的可见光拍摄,名为Pi Camera V2;
另一款摄像头带有红外夜视功能,名为Pi NoIR Camera V2。
本章的内容同时适用于这两种摄像头。
1.摄像头的安装与设置:
树莓派摄像头安装在一个方形的电路板上,从电路板上伸出一根柔软的排线。我们需要把摄像头的排线插入树莓派上的"camera"接口。首先抬起接口的盖子,然后放入排线,最后把盖子重新装回去,如图所示。
安装好摄像头后,打开树莓派。首先更新Raspbian系统的软件源并升级:
其次,我们要在树莓派设置中,启动摄像头模块,用命令进入设置页面:
在设置页面中选择启动摄像头。
2.摄像头的基本使用:
设置完成后,摄像头就可以工作了。
Raspbian提供了raspistill和raspivid两个工具,分别用于获得图片和视频。
1.用摄像头拍照
我们用raspistill拍照:
拍照获得的图片保存为文件image.jpg。你可以用文件管理器找到并查看该照片。
2.用摄像头录视频
我们可以用raspivid录视频:
获得10秒H.264压缩格式的视频,存入文件video.h264。
我们可以把H.264文件转换为更常见的MP4视频文件格式。GPAC是一款多媒体框架,提供了视频格式转换的功能。
安装GPAC:
用GPAC中的MP4Box把文件转换为video.mp4:
大部分视频播放器都可以播放MP4视频。在Raspbian中播放video.mp4:
这里的omxplayer是Raspbian中的视频播放器。
3.用VLC做网络摄像头:
除了直接录制视频文件,树莓派的摄像头还能拍摄流媒体,用于网络播放。
Raspbian下有很多工具可以实现这一功能,这里介绍VLC的用法。
VLC是大名鼎鼎的视频播放软件,支持包括Raspbian在内的多个平台。
在Raspbian下安装VLC,作为流媒体的服务器:
利用Linux下的管道机制,把raspivid拍摄的内容导入VLC:
选项-n说明了不显示预览窗口。随后VLC作为服务器,将流媒体送到树莓派的8160端口。同一网络的任意装有VLC的设备都可以通过访问树莓派的IP地址和8160端口来播放摄像头拍摄的内容。比如树莓派在笔者的局域网中的IP地址是192.168.1.27,那么在手机版VLC的网络媒体源中输入下面网络源:
就可以在同一局域网下查看该网络摄像头的实时视频。
我们用树莓派制作了一个可移动的网络摄像头。更进一步,我们可以通过隧道的方式把视频内容绑定到某个互联网服务器上,从而在互联网范围内发布该网络摄像头。实现隧道的方法已经在第8章中介绍过了。
4.用Motion做动作捕捉:
Motion是Linux下一款轻量级的监控软件。在日常工作模式下,Motion可以提供网络摄像头的功能。在拍摄过程中,当画面发生变动时,Motion可以保存动作发生时的图片和视频。动作捕捉的功能对于安保监控有很大帮助。我们配合Motion来使用树莓派摄像头。
1.使用Motion
首先,下载安装Motion:
修改/etc/default/motion,更改设置,让Motion启动后台的守护进程:
然后,修改Motion的配置文件/etc/motion/motion.conf,更改下面几个值为:
让Motion作为背景的守护进程运行。
如果是on,那么只有树莓派自己可以看到流媒体。如果是off,那么网络上的其他主机也可以看到。
表示流媒体的帧速率最大为每秒30帧。
表示摄像头捕捉视频的帧速率为每秒30帧。
选项修改好之后,就可以启动Motion了:
现在摄像头已经在录制流媒体了。在同一局域网下,用浏览器打开192.168.8.113:8081这一网址,可以直接看到即时拍摄的流媒体。
此外,Motion还可以进行动作捕捉。如果你在摄像头前挥手,那么Motion会捕捉这一动作,并把相关的图片和视频存储在目录/var/lib/motion之下。
2.Motion的其他设置
Motion的主要设置都在/etc/motion/motion.conf文件中。除上面我们修改的配置外,文件中还有许多其他选项,这里选择一些重要的配置进行介绍。
(1)target_dir:该选项的默认值为/var/lib/motion。这就是Motion存储动作捕捉结果的地方。Motion的进程是以用户motion的身份运行的,所以用户motion必须对该目标文件夹有写入权限。本书的第18章会介绍用户权限的相关内容。
(2)stream_port:流媒体的输出端口,默认值是8081,也就是我们刚才访问流媒体的端口。如果有需要,可以更改输出端口。
(3)threshold:动作捕捉阈值,默认值为1500。如果有超过阈值的像素点发生变化,那么认为有动作发生。
(4)videodevice:该项默认为路径/dev/video0。这个路径对应了默认的视频设备。如果你无法在/dev下找到video0,那么可以尝试加载V4L2驱动来解决问题:
这篇关于树莓派开始,玩转Linux11:你是我的眼的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!