树莓派连接usb摄像头实现家庭监控

最近新购入极路由,用其自带的动态转发功能,把家里的树莓派设置为可以远程访问的服务器,所以想可以进一步扩展一下树莓派的功能。想到家里以前有个不怎么好看的摄像头(当年买来准备QQ视频用)闲置,找出来接上树莓派,没想到直接就识别了。这样做一个家庭监控因该很容易吧,于是立刻开始动手实践。

正如刚刚所说的,将usb摄像头接入树莓派后,终端输入

1
ls -l /dev/video*

如果显示video0,则表示摄像头已经被识别,无需再安装驱动

接下来就是调用摄像头进行监控操作,通过搜寻发现有两种方法可以供使用

fswebcam配合脚本实现定时抓取图像

这个方式需要自己编写脚本定时抓取图像,简单但没有运动检测,如果监控区域长期没有变化,也会一直抓取。

首先安装fswebcam

1
sudo apt-get install fswebcam

完成后输入

1
sudo fswebcam -d /dev/video0 -r 320x240 /mnt/disk/Photo.jpg

就立刻抓取了一张图像,将以上命令写入脚本,保存为cam.sh

1
2
3
4
5
#!/bin/sh
for i in $(seq 3600);do
    sudo fswebcam -d /dev/video0 /mnt/sandisk/home.jpg
    sleep 1
done;

脚本设置了一个循环,每隔1秒抓取一张图像,为了防止无限抓取,设置了脚本最多抓取3600张图片后停止。接下来在screen中执行这个脚本,就可以看到/mnt/sandisk/home.jpg在不断刷新最新的监控图像。如果需要做到通过浏览器访问,只需要写一个cam.html页面,放在home.jpg相同目录下:

1
2
3
4
5
6
7
8
9
10
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>树莓派监控页面</title>
</head>
<body>
<img src="home.jpg"></img>
</body>
</html>

然后在当前目录架设python的简单http服务器

1
python3.4 -m http.server

然后通过动态域名直接访问即可(如 http://demo.jios.org:8000/cam.html)

当然,也可以通过这个链接的方法把监控图片直接集成到该平台上,直接通过平台访问。

motion实现输出视频文件家庭监控

我采用的是这个方法,因为motion这个开源软件配置好之后,实在是非常好用。

首先安装motion

1
sudo apt-get install motion

接着对/etc/motion/motion.conf进行编辑

1
sudo /etc/motion/motion.conf

修改以下相应参数

1
2
3
4
5
6
7
8
9
10
11
12
daemon off //后台运行关闭,如果你需要24小时监控,可以设置为开启
stream_localhost off //此处修改为off,否则无法登陆默认8081端口的监控页面
webcontrol_localhost off //此处修改为off,否则无法登陆默认8080端口的配置页面
quiet on
videodevice /dev/video0
width 320
height 240
framerate 2
auto_brightness off
target_dir /mnt/disk //默认保存位置需要修改,否则运行出错
output_pictures off //因为我不需要输出图片保存,因此此项关闭
ffmpeg_output_movies on //输出视频

设置好之后执行

1
sudo motion

监控开始工作,当有侦测到有运动状态时,就会自动以视频形式记录,如果监控画面长时间没有变化,则停止记录。

此外motion.conf中还有on_event_start和on_event_end设置,这两个参数分别用于当检测到运行状态时,开始记录时执行的脚本,以及当停止记录时执行的脚本,通过编写脚本,可以实现一旦监控到内容即时发送视频到指定邮箱这样的功能,具体实现可以参考这里,我暂时没有这样的需求,因此就没有继续去做这样的工作了。

到这里,就完成了树莓派视频监控的打造。

坚持原创技术分享,您的支持将鼓励我继续创作!