树莓派学习:CSI摄像头安装及使用
目录
前言
本文记录了捣鼓树莓派CSI摄像头的基本方法,包括了树莓派自带命令控制,利用python控制,以及安装开源软件motion来做一些简单的监控任务。
1. 摄像头安装
- 树莓派上的CSI口
- 将黑色卡扣提起
- 将CSI排线插入槽内
- 按下黑色卡扣固定
注意:排线需要先穿过树莓派壳体。
2. 配置树莓派摄像头
打开树莓派摄像头接口
sudo raspi-config
-> 5 Interfacing option
-> P1 Camera
-> enable? YES
-> Finish (reboot)
测试树莓派摄像头模块
ls -al /dev/ | grep video
3. 树莓派自带命令控制摄像头
树莓派自带控制控制CSI摄像头的命令,主要是拍照raspistill
和录像raspivid
,下面依次介绍。
2.1 拍照
基本命令如下:
raspistill -o "filename.jpg"
其中-o
是输出文件,后面跟文件名,默认是.jpg
格式的。
还有很多参数就不一一列举了,毕竟我们后续很少直接敲命令行来拍照,主要还是用Pyhon来控制。以下基础的命令行了解一下就可以了。
Image parameter commands
-q, --quality : Set jpeg quality <0 to 100>
-t, --timeout : Time (in ms) before takes picture and shuts down (if not specified, set to 5s)
-e, --encoding : Encoding to use for output file (jpg, bmp, gif, png)
Common Settings commands
-?, --help : This help information
-w, --width : Set image width <size>
-h, --height : Set image height <size>
-o, --output : Output filename <filename> (to write to stdout, use '-o -'). If not specified, no file is saved
举个例子:
照一张名为image_test.png
照片,并存在当前目录下。
raspistill -o ./image_test.png -e png
2.2 录像
操作方法与照相相似,基本操作如下。
raspivid -o "filename.h264"
录制视频默认尺寸为 1080p(1920×1080),同样可以调用以下参数来更改录制。
Image parameter commands
-b, --bitrate : Set bitrate. Use bits per second (e.g. 10MBits/s would be -b 10000000)
-t, --timeout : Time (in ms) to capture for. If not specified, set to 5s. Zero to disable
-fps, --framerate : Specify the frames per second to record
Common Settings commands
和拍照相同
举个例子:
录一段5s的视频,起名为video_test.h264
,并存在当前目录下。
raspivid -t 5000 -o video_test.h264
以上命令、参数都不需要记,也不常用,实在要用的时候就 raspistill -?
或者raspivid -?
查询也可以。
3. 利用Python的picamera
库控制摄像头
树莓派自带了picamera
库,它可以直接操作摄像头(相当于操作了树莓派的底层命令)。我们先简单看一些简单的功能。
# 导入相关模块
import picamera
from time import sleep
# 实例一个camera
camera = picamera.PiCamera()
# 捕获图像
camera.capture('image.jpg')
# 打开预览
camera.start_preview()
# 垂直翻转
camera.vflip = True
# 水平翻转
camera.hflip = True
# 控制摄像头亮度
camera.brightness = 60
# 控制摄像头录像
camera.start_recording('video.h264')
# 等待5s(但摄像头继续工作)
sleep(5)
# 停止录像
camera.stop_recording()
from picamera import PiCamera
import time
"""set camera"""
camera = PiCamera()
camera.resolution = (1920,1080)
camera.framerate = 60
# 打开预览
camera.start_preview()
camera.capture('/home/pi/testme.jpg')
camera.stop_preview()
4. 利用motion实现运动监控
利用 motion
完成运动物体监控,motion
是一款运动检测软件,原理是利用图像的变化触发拍照或其他脚本。
下载安装 motion
sudo apt-get install motion
配置 motion
sudo vim /etc/default/motion
打开守护进程。
将 start_motion_daemon=no
改为 start_motion_daemon=yes
修改配置文件
sudo vim /etc/motion/motion.conf
----------------------------------------------------------
-> 11: daemon on # 打开守护进程
-> 445: stream_port 8081 # 用8081端口读取视频数据
-> 461: stream_localhost off # 允许通过非local host来查看视频
启动 motion
#启动motion服务
sudo service motion start
#开启motion
sudo motion
打开网址 http://[树莓派IP地址]:8081
,查看视频。
当motion
运行后,可以通过 -SIGNUP
来重新加载配置文件
sudo killall -SIGNUP motion
也可以直接关闭
sudo killall -w motion
关闭时定格到最后一刻:
sudo killall -TERM motion