树莓派摄像头使用Motion监测人物动作

参考:树莓派摄像头检测到人物动作
作者:枕上
发布时间:2021-07-22 20:37:17
网址:https://blog.csdn.net/jinchi_boke/article/details/119008405?spm=1001.2014.3001.5501

本文中初步体验了一下树莓派摄像头的基础玩法,利用命令行实现拍照片、拍视频、监控等基本功能。

硬件安装

把摄像头插到树莓派上。需要将摄像头底下那个蓝色的一面朝向USB接口那个方向,不要插反了。等到安装完毕了,确保连接好各个硬件之后再开电源,千万记得不要热插拔摄像头。

配置

登录到树莓派,添加摄像头驱动。

sudo vi /etc/modules
# 在文件最后添加
bcm2835-v4l2
sudo raspi-config

选择Interfacing Options,选择Camera,选择。确定后需要重启,重启的时候会发现摄像头的小灯会亮1下(之前不亮)。

通过下面的命令检查摄像头是否正常。

ls -al /dev/ | grep video

基本操作

先记住一个用来从树莓派上下载文件的命令scp,方便查看后面拍摄的照片和视频。

# 将树莓派上image.jpg文件拷贝到当前目录
scp pi@192.168.1.16:/home/pi/image.jpg .

使用命令行拍照片:

raspistill -o image.jpg

使用命令行拍10s的视频:

raspivid -o vv.h264 -t 10000

参数:

-? 列出所有参数
-o 输出到指定文件,如果文件名"-"代表标准输出(stdout-rot 旋转角度

参考:https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspistill.md

参考:https://www.raspberrypi.org/documentation/usage/camera/raspicam/raspivid.md

用VLC做网络摄像头

sudo apt update
sudo apt upgrade
 
sudo apt install -y vlc
 
raspivid -o - -t 0 -n -w 640 -h 480 | cvlc -vvv stream:///dev/stdin --sout '#standard{access=http,mux=ts,dst=:8160}' :demux=h264

参数-n说明了不显示预览窗口。随后vlc作为服务器,将流媒体送到树莓派的8160端口。同一网络下的任意其他装有VLC的设备,就可以通过访问树莓派的IP地址和8160端口(例如:http://192.168.1.16:8160)来播放摄像头拍摄的内容。

如果出现报错信息:

VLC is not supposed to be run as root.
vi /usr/bin/vlc
# search for "geteuid" and replace it with "getppid"

延迟比较严重,大概有5s左右。

用Motion做监控

Motion是Linux下一款轻量级的监控软件。在日常工作模式下,Motion可以提供网络摄像头的功能。当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频。

安装和基础配置

sudo apt-get install motion

修改Motion的配置文件/etc/motion/motion.conf,更改下面几个值为:

stream_localhost off
stream_maxrate 30
framerate 15 # 默认值是2,看起来会延迟很严重
stream_port 8081 # 端口号

需要注意的是target_dir选项,默认值为/var/lib/motion。这是Motion存储文件的目标文件夹。所存储文件包括了运动捕捉产生的图片或视频。用户motion必须对该目标文件夹有写入权限。同时留意,流媒体的默认端口是8081。

修改/etc/default/motion,更改守护进程的设置:

start_motion_daemon=yes

进行监控

启动motion

# 默认是控制台模式启动,后台启动的话加 -b
sudo motion 

在同一局域网下的其他电脑上,用浏览器打开192.168.1.13:8081,可以直接看到即时拍摄的流媒体。另外,可以到树莓派上的/var/lib/motion目录下查看录制好的视频。

监控运动物体(人脸靠近)

通过motion可以实现当监控到有运动物体时,截取图片。

output_pictures best # 将off改为best,还可以选first和center

启动motion,拍摄从静止到运动的场景,例如:挥挥手,然后到/var/lib/motion目下看看有没有生成包含运动物体的图片。

监控到运动物体时报警

监控到运动物体手工检查并不实用,我们更希望能够报警。

首先,在/home/pi/project/try-motion目录下面新建一个文件motionpic.py:

from sys import argv
 
filename = argv[1]
f = open('motion.log', 'a')
f.write(filename)
f.write('\r\n')

然后修改/etc/motion/motion.conf文件:

on_picture_save python3 /home/pi/project/try-motion/motionpic.py %f

当监控到运动物体时,就会记录到/home/pi/project/try-motion/motion.log文件中。

其实,以此代码为基础,我们可以实现很多监控报警场景,例如可以和树莓派的GPIO联动起来,实现一些更直观的报警效果。

参考:https://motion-project.github.io

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要将树莓派摄像头接入homeassistant,需要以下步骤: 1. 首先确保你的树莓派已经安装了摄像头模块,并且已经在树莓派上成功运行。 2. 安装motion软件,这是一个可用于监控视频的开源软件。在树莓派上打开终端,输入以下命令来安装motion: ``` sudo apt-get update sudo apt-get install motion ``` 3. 配置motion软件。在终端中输入以下命令打开配置文件: ``` sudo nano /etc/motion/motion.conf ``` 在这个文件中,你需要将以下配置更改为你的树莓派摄像头的设置: ``` daemon on width 640 height 480 framerate 100 stream_localhost off output_pictures off ffmpeg_output_movies off snapshot_interval 0 webcontrol_localhost off ``` 完成后,按Ctrl+X,然后按Y来保存更改。 4. 将motion软件设置为开机自启动。在终端中输入以下命令: ``` sudo nano /etc/default/motion ``` 在这个文件中,你需要将以下配置更改为: ``` start_motion_daemon=yes ``` 完成后,按Ctrl+X,然后按Y来保存更改。 5. 启动motion软件。在终端中输入以下命令: ``` sudo service motion start ``` 这时候你就可以通过浏览器访问树莓派的IP地址来查看摄像头的视频了。 6. 将树莓派摄像头接入homeassistant。在homeassistant的配置文件中,添加以下配置: ``` camera: - platform: mjpeg name: raspberrypi_camera stream_source: http://[树莓派IP地址]:8081/ ``` 完成后,重新启动homeassistant即可。 现在你就可以在homeassistant中查看树莓派摄像头的视频了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行稳方能走远

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值