树莓派开始,玩转Linux11:你是我的眼

树莓派开始,玩转Linux11:你是我的眼

树莓派官方出品有小型摄像头,用于录制视频或拍摄图片。树莓派加上小型摄像头,就构成了一个好玩的移动摄影装置。
最新的官方摄像头版本是V2,配有8M像素的Sony IMX219感光板,可以满足一般的摄影摄像需求。V2摄像头又可以分为两款。
一款摄像头用于正常的可见光拍摄,名为Pi Camera V2;
另一款摄像头带有红外夜视功能,名为Pi NoIR Camera V2。
本章的内容同时适用于这两种摄像头。

1.摄像头的安装与设置:

树莓派摄像头安装在一个方形的电路板上,从电路板上伸出一根柔软的排线。我们需要把摄像头的排线插入树莓派上的"camera"接口。首先抬起接口的盖子,然后放入排线,最后把盖子重新装回去,如图所示。
树莓派开始,玩转Linux11:你是我的眼
安装好摄像头后,打开树莓派。首先更新Raspbian系统的软件源并升级:
树莓派开始,玩转Linux11:你是我的眼
其次,我们要在树莓派设置中,启动摄像头模块,用命令进入设置页面:

树莓派开始,玩转Linux11:你是我的眼
在设置页面中选择启动摄像头。

2.摄像头的基本使用:

设置完成后,摄像头就可以工作了。
Raspbian提供了raspistill和raspivid两个工具,分别用于获得图片和视频。

1.用摄像头拍照
我们用raspistill拍照:
树莓派开始,玩转Linux11:你是我的眼
拍照获得的图片保存为文件image.jpg。你可以用文件管理器找到并查看该照片。

2.用摄像头录视频
我们可以用raspivid录视频:
树莓派开始,玩转Linux11:你是我的眼
获得10秒H.264压缩格式的视频,存入文件video.h264。

我们可以把H.264文件转换为更常见的MP4视频文件格式。GPAC是一款多媒体框架,提供了视频格式转换的功能。
安装GPAC:
树莓派开始,玩转Linux11:你是我的眼

用GPAC中的MP4Box把文件转换为video.mp4:
树莓派开始,玩转Linux11:你是我的眼
大部分视频播放器都可以播放MP4视频。在Raspbian中播放video.mp4:
树莓派开始,玩转Linux11:你是我的眼
这里的omxplayer是Raspbian中的视频播放器。

3.用VLC做网络摄像头:

除了直接录制视频文件,树莓派的摄像头还能拍摄流媒体,用于网络播放。
Raspbian下有很多工具可以实现这一功能,这里介绍VLC的用法。

VLC是大名鼎鼎的视频播放软件,支持包括Raspbian在内的多个平台。
在Raspbian下安装VLC,作为流媒体的服务器:
树莓派开始,玩转Linux11:你是我的眼
利用Linux下的管道机制,把raspivid拍摄的内容导入VLC:
树莓派开始,玩转Linux11:你是我的眼
选项-n说明了不显示预览窗口。随后VLC作为服务器,将流媒体送到树莓派的8160端口。同一网络的任意装有VLC的设备都可以通过访问树莓派的IP地址和8160端口来播放摄像头拍摄的内容。比如树莓派在笔者的局域网中的IP地址是192.168.1.27,那么在手机版VLC的网络媒体源中输入下面网络源:
树莓派开始,玩转Linux11:你是我的眼
就可以在同一局域网下查看该网络摄像头的实时视频。

我们用树莓派制作了一个可移动的网络摄像头。更进一步,我们可以通过隧道的方式把视频内容绑定到某个互联网服务器上,从而在互联网范围内发布该网络摄像头。实现隧道的方法已经在第8章中介绍过了。

4.用Motion做动作捕捉:

Motion是Linux下一款轻量级的监控软件。在日常工作模式下,Motion可以提供网络摄像头的功能。在拍摄过程中,当画面发生变动时,Motion可以保存动作发生时的图片和视频。动作捕捉的功能对于安保监控有很大帮助。我们配合Motion来使用树莓派摄像头。

1.使用Motion
首先,下载安装Motion:
树莓派开始,玩转Linux11:你是我的眼
修改/etc/default/motion,更改设置,让Motion启动后台的守护进程:
树莓派开始,玩转Linux11:你是我的眼
然后,修改Motion的配置文件/etc/motion/motion.conf,更改下面几个值为:
树莓派开始,玩转Linux11:你是我的眼
让Motion作为背景的守护进程运行。

树莓派开始,玩转Linux11:你是我的眼
如果是on,那么只有树莓派自己可以看到流媒体。如果是off,那么网络上的其他主机也可以看到。

树莓派开始,玩转Linux11:你是我的眼
表示流媒体的帧速率最大为每秒30帧。

树莓派开始,玩转Linux11:你是我的眼
表示摄像头捕捉视频的帧速率为每秒30帧。
选项修改好之后,就可以启动Motion了:
树莓派开始,玩转Linux11:你是我的眼
现在摄像头已经在录制流媒体了。在同一局域网下,用浏览器打开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:你是我的眼

上一篇:【图像修复】基于matlab GUI运动模糊消除(逆滤波)【含Matlab源码 847期】


下一篇:CAD拉伸命令S不能移动怎么办?