文章目录
摄像头硬件安装
- 硬件连接时我们首先需要使用树莓派摄像头FFC排线连接树莓派摄像头与树莓派开发板。
- 排线连接的接口被称为CSI(Camera Serial Interface)接口。
mjpg-streamer功能介绍
- 树莓派利用pi Camera模块,通过mjpg-streamer软件获取视频,通过手机端或电脑端浏览实时视频
- mjpg-streame是一个开源的摄像头的媒体流,他是通过本地获取本地摄像头的数据,再通过http通讯发出来
mjpg-streamer安装
步骤一:
sudo apt-get update #更新软件列表
sudo apt-get upgrade #更新软件
sudo apt-get install subversion #Subversion是一个自由开源的版本控制系统
//下载安装其他相应的支持库
sudo apt-get install libjpeg8-dev #JPEG支持库
sudo apt-get install imagemagick
sudo apt-get install libv4l-dev #4l是小写"L"
sudo apt-get install cmake #下载编译工具
报错:
下载安装包的时候显示空间不足
方案一:
df -h
查看内存,如果只有3.1G就需要扩容sudo raspi-config
,然后执行下面流程
方案二:
- 通过排查 ‘You don‘t have enough free space in /var/cache/apt/archives/‘ 错误文章中的
sudo apt-get autoremove
命令以及sudo apt-get clean
清除空间
步骤二:
下载git
sudo apt-get install git
下载压缩包到树莓派
git clone https://github.com/jacksonliam/mjpg-streamer.git
或去官网下载压缩包,然后上传到树莓派,官网地址:https://github.com/jacksonliam/mjpg-streamer,
然后调用unzip mjpg-streamer-experimental压缩
进入文件目录
cd mjpg-streamer/mjpg-streamer-experimental
步骤三:
编译
make all //编译,调用cmake,cmake利用插件的思想(生成so文件)去构建整个工程
执行结果
安装
sudo make install #安装
执行结果
修改启动脚本
vi start.sh
将
input_uvc.so
注释掉,替换成
input_raspicam.so
将启动脚本原来默认的USB摄像头替换成树莓派的
步骤四:
使用
ls /dev
指令来查看是否存在vchiq设备节点:
运行
vcgencmd get_camera
查看当前摄像头是否可用:
- 如果detected=0,说明摄像头模块没接好,重新排查下硬件。
- detected=1则说明CSI摄像头接入正常。
- supported=1说明摄像头已经使能,摄像头已经可以使用。
- supported=1则说明CSI摄像头没有使能。需要使能下摄像头模块。
打开Linux系统的摄像头
sudo raspi-config
步骤如下:
进入到
pi@raspberrypi:~/mjpg-streamer/mjpg-streamer-experimental $
目录下启动脚本
./start.sh
执行结果:
步骤五:
在浏览器输入 http://IP地址:8080,回车 显示如下页面,点击页面左侧,Stream栏,显示监视画面
参考博文:树莓派3B + Pi摄像头+mjpg-streamer
使用rapistill命令拍照
raspistill -o image.jpg -t 1000
主要学习其参数及命令:(更多参数使用raspistill --help)
- -w, –width : 设置图像宽度 <尺寸>
- -h, –height : 设置图像高度 <尺寸>
- -q, –quality : 设置jpeg品质 <0到100>
- -t, –timeout : 拍照和关闭时的延时指定,未指定时默认是5s,毫秒为单位,1000便表示1秒
- -o, –output : 输出文件名 <文件名>,如果要写到stdout,使用-o -,如果不特别指定,图像文件不会被保存
- -rot:图像旋转角度,只支持 0、90、180、270 度
专业摄影参数:
- 曝光参数:- -ss:后跟的是微秒- -ss 9000000:9s- -ISO 125:感光- -ex verylong:焦距,无限远;
- -awb off:自动白平衡,awb:auto white balance- -awbg 1,1
- -bm(burst mode), –burst : 运行burst capture mode
延时拍摄参数:
- -tl(–timelapse ):raspistill 进入 -tl 模式,则排到的便不是一副图像,而是通过一定的时间间隔的多幅图像;
注意:
- 照片将会保存在当前路径下,使用MobaXterm可以传输到windows桌面打开
参考博文:
【树莓派】简单配置CSI摄像头
树莓派进阶之路 (018) - raspberryPi摄像头命令行软件raspistill帮助文档
使用raspivid命令录像
raspivid -o b.h264 -t 10000-w 1280-h 720
该命令的意思是录制一段十秒钟的名为b.h264的视频,且分辨率为1280x720
如果不带名称后的参数的话,系统会默认录制时间为5秒,分辨率为1920x1080。
此时录制的视频虽然能够在树莓派上播放,但并非是能够在一般播放器上运行的常规视频文件,且录制的视频是没有声音的。
要想将.h264格式的视频转换为mp4格式的视频,需要使用一个叫做gpac的工具。
sudo apt-get update
sudo apt-get install gpac
安装后输入以下命令对刚才的视频进行格式转换,转换后的视频为每秒30帧。
MP4Box -fps 30-add b.h264 b.mp4
使用motion命令监控
简介:Motion是Linux下一款轻量级的监控软件。在日常工作模式下,Motion可以提供网络摄像头的功能。当拍摄过程中画面发生变动时,Motion可以保存动作发生时的图片和视频。
输入命令进行安装:
sudo apt-get install motion
首先将motion软件的后台进程改为开启,让它能够一直在后台运行。输入以下命令,将文件中 “start_motion_daemon=no” 的no改为yes。执行 CTRL + O 并按 ENTER 保存更改,按 CTRL + X退出
sudo nano /etc/default/motion
之后输入命令打开motion的配置文件:
sudo nano /etc/motion/motion.conf
这个文件中保存了许多motion的基本设置,因为选项比较多,下面只写出一些比较重要的选项的值,其他可以用默认值,或者参考motion官网上的documents。motion.conf里自带的注释也很完整。
daemon on #off改成on,在后台运行。设置为off将在前台运行
width 640
height 480 #摄像头像素宽高
framerate 50 #帧率fps,解决卡顿问题
stream_maxrate 100 #默认是1,不改的话监控视频会很卡,将其参数改大
stream_localhost off #设为off,允许外网访问视频流(on为不允许)
#如果要检测到运动的物体可以加:
locate_motion_mode on #将off修改为on,探测到实时视频中有物体运动时,运动区域被矩形框起来
#如果要修改视频流端口:
stream_port 8081 #端口号
#如果要修改Motion存储文件的目标文件夹
target_dir /var/lib/motion #所存储文件包括了运动捕捉产生的图片或视频,用户motion必须对该目标文件夹有写入权限
#通过motion可以实现当监控到有运动物体时,截取图片。
output_pictures best # 将off改为best,还可以选first和center
需要更改的参数有以下几行,在nano编辑器环境下可以使用快捷键ctrl+w对关键字进行查找。
关闭motion服务的命令:
sudo killall -TERM motion
sudo service motion stop
启动服务命令:
sudo service motion start
打开motion命令:
sudo motion
motion运行成功打印:
[0:motion][NTC][ALL] conf_load: Processing thread 0- config file /etc/motion/motion.conf
[0:motion][ALR][ALL] conf_cmdparse: Unknown config option "
"
[0:motion][NTC][ALL] motion_startup: Logging to file(/var/log/motion/motion.log)
在同一局域网下的浏览器访问
http://raspberry IP:8081
- 这里的8081是和配置文件中的视频流端口号有关(stream_port 8081)
可以设置开机自动启动motion,执行下面命令,在exit 0前添加 motion
sudo nano /etc/rc.local
报错:
如果在浏览器访问显示灰色内容且摄像头也没亮,说明少驱动bcm2835-v4l2
执行
cat /etc/modules
查看modules是否包含bcm2835-v4l2
如果没有则按照如下解决方法:查看下面的《添加UVC驱动》
原因分析:
参考博文:
树莓派4B摄像头安装和使用方法详解(支持拍照,录像,实时监控)
树莓派4B摄像头的详细使用教程(拍照+录像+监控)
添加UVC驱动
有些程序采用V4L2编程,会访问到/dev/videoX设备,因此需要添加UVC驱动,针对树莓派3B/3B+可以采用如下的方法添加bcm2835-v4l2驱动:
执行
sudo vim.tiny /etc/modules
在最后一行添加
bcm2835-v4l2
pi@raspberrypi:~$ sudo vim.tiny /etc/modules
# /etc/modules: kernel modules to load at boot time.
#
#This file contains the names of kernel modules that should be loaded#atboot time, one per line. Lines beginning with "#"are ignored.
i2c-dev
bcm2835-v4l2
然后重启即可在/dev/目录下看到videoX(X为数字编号,如0)的驱动
版权归原作者 Is Fang 所有, 如有侵权,请联系我们删除。