使用树莓派的摄像头
我目前使用的树莓派是3B+,操作系统是Raspbian-stretch。树莓派官方提供了小型摄像头,用于拍照和录制视频。目前官网上提供了两款摄像头,一个是用于正常的可见光拍摄,另一个带有红外夜视功能,我入手的是这款带红外夜视功能的摄像头,这款摄像头的名字叫PI NOIR CAMERA V2(The infrared Camera Module v2 (Pi NoIR)),具体可以参见树莓派官网。
摄像头的安装与设置
首先准备好树莓派,已经安装好官方的Raspbian系统,如果没有安装好请参考开始使用树莓派。把摄像头的排线插入树莓派上的"camera"插口。摄像头对静电比较敏感,同时也不要在树莓派运行时插拔摄像头,不然很容爆掉。
树莓派开机后,首先更新源
sudo apt-get update && sudo apt-get upgrade
然后设置摄像头的使能控制端,即开启摄像头功能,选择Interface Options选项,然后选择P1 Camera开启摄像头
使用摄像头
设置完成后,摄像头就可以进行工作了,目前提供了三个应用程序,分别为:raspistill、raspivid、raspistillyuv。其中 raspistill 和 raspistillyuv 非常相似,并且都是用于捕捉图像,而 raspivid 用于捕捉视频。
1)用rasptill获取一张图片
raspistill -o image.jpg
2)用raspivid获取视频
raspivid -o video.h264 -t 10000
获得10秒H.264压缩格式的视频,存入到文件video.h264。
raspivid 通常会将录制的视频保存为 .h264 格式的文件,而我们使用的很多播放器可能无法正常播放该格式的视频文件。这就需要我们将生成的 .h264 格式的文件封装到播放器能够识别的视频容器格式中(比如封装为 mp4 格式)。有很多视频处理软件可以达到这个目的,可以直接在树莓派上进行封装。这里介绍的是“gpac”中的“MP4Box”。
安装gpac
$sudo apt-get update $sudo apt-get install gpac
将.h264的文件转换成.mp4的文件
$sudo MP4Box -add video.h264 video.mp4
使用omxplayer播放视频
$omxplayer video.mp4
这里仅仅是最基本的操作,如果要更深入的了解,还是要看这两个命令的帮助文档,可以执行
$raspistill --help
$raspivid --help
使用motion搭建视频监控系统
motion是Linux下一款轻量级的视频监控软件,motion可以提供网络摄像头的功能,当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频,这时如果将抓拍的图片或视频上传到百度云或者DropBox中就可以实现一个简单的监控系统。具体实现如下:
安装motion
$sudo apt-get install motion
配置motion选项时,先对配置文件进行备份
$sudo cp /etc/motion/motion.conf /etc/motion/motion.conf.bak
修改/etc/motion/motion.conf选项
$sudo vim /etc/motion/motion.conf
daemon on #开启守护进程(选配) target_dir /home/pi/motion-images #文件保存的路径,图像变化时图片保存的路径 stream_localhost off #允许通过网页查看摄像头
width 640
height 480
stream_maxrate 30
framerate 30
值得注意的是target_dir选项,默认值为/var/lib/motion。这是motion存储文件的目标文件夹。所存储文件包括了运动捕捉产生的图片或视频。用户motion必须对该目标文件夹有写入权限。这里我们将默认的文件目标进行了修改。同时注意,流媒体的默认端口是8081,这里后面会使用到。
最后,在设置文件中,默认的视频设备(videodevice项)是/dev/video0。如果你连接好了摄像头,却无法在/dev下找到video0,那么可以尝试加载V4L2驱动:
sudo rpi-update sudo modprobe bcm2835-v4l2 #加载驱动模块
这样每次启动都要重新加载v4l2驱动,如果你希望开机就加载v4l2驱动可以在/etc/modules文件中加入bcm2835-v4l2,这样每次开机就可以直接加载v4l2驱动模块。
修改/etc/default/motion,更改守护进程的设置:
start_motion_daemon=yes
然后,启动motion
sudo motion
在同一局域网下的其他电脑上,用浏览器打开192.168.23.122:8081,可以直接看到即时拍摄的流媒体:
动作捕捉的图片和视频将存储在目录/home/pi/motion-images下。如果想改变动作捕捉的相关参数,例如动作捕捉的敏感度等,可以在/etc/motion/motion.conf中修改,这里需要参考具体motion的使用。
当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频