树莓派摄像头入门



很久没关注树莓派了,最近某宝上发现Zero W的价格大幅下降(对比最初时比3B还略贵),果断再入一个,摊薄持有成本,老股民了。自己找了个塑料小盒子固定上,再配上个官方摄像头,俨然一个小小的玩具摄像机。

总觉得又不玩OpenCV这样高深的技术,单摄像头没啥好写的。也是,raspistill和raspivid命令现查用法也都来得及。这篇就算一个小笔记吧,记录下我都拿它做过了些什么。

启用摄像头:
打开raspi-config或桌面里的Raspberry Pi Configuration,启用Camera就好。

基本拍照命令:
raspistill -o 输出文件名 -t 延时(单位ms) --nopreview
如果要指定分辨率大小,可以加上-w 宽度 -h 高度 参数。这两个参数的单位都是像素。
例如,raspistill -o test.jpg -t 1 --nopreview -w 1600 -h 1200

在此基础上,可以做个bash脚本,连拍N张。比如:
#!/bin/bash
#日期仅当作批次流水号用,防止文件名重复
dt=`date +%Y%m%d%H%M%S`
for ((i=1;i<=3;i++))
do
 sudo raspistill -o "$dt-$i.jpg" -t 1 --nopreview
done

当然raspistill本身也自带了定时拍摄的功能,可以用-tl参数实现。

然后我想做一个php网页,直接调用raspistill命令,这样就可以在别的电脑上,甚至手机上打开浏览器通过wifi遥控拍照了(盲拍)。

新版Raspbian里支持php7了:
sudo apt-get install apach2 php7.0

在/var/www/html下写一个拍照的页面c.php:
<?php
 echo `sudo raspistill -o /var/www/html/a.jpg -t 1 --nopreview -w 800 -h 600`;
 header('Location:./a.jpg');
?>

但是得到了500内部错误。查了一些资料,这是由于权限不够所致。修正方法如下:
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
在最后加一句:
www-data ALL=NOPASSWD: ALL
保存。然后重设权限:
sudo chmod -w /etc/sudoers
sudo chown -R www-data:www-data /var/www
重启。最后再运行一句:
sudo usermod -a -G video www-data
这样就可以了。

======视频篇=======

raspivid命令可用于录制无声视频。例如以下命令:
raspivid -o test.h264 -t 10000
录制10秒视频,保存为test.h264。
也可以指定视频宽高:
raspivid -o test.h264 -t 10000 -w 1280 -h 720

原始视频可以转换为更通用的MP4格式。首先安装gpac:
sudo apt-get install gpac
然后,用MP4Box做格式转换:
MP4Box -fps 30 -add test.h264 test.mp4
其中,-fps为帧率。


实时监控:
有一个现成的轮子,pistreaming:
sudo apt-get install libav-tools git python3-picamera python3-ws4py
git clone https://github.com/waveform80/pistreaming.git
$ cd pistreaming
$ python3 server.py

使用方法:
http://树莓派的IP地址:8082/

友情提醒:受限于树莓派Zero的整体性能,实时监控偶尔会卡机或死机,打算用于监控重要场合的需谨慎。

猜你喜欢

转载自blog.csdn.net/ki1381/article/details/79229289