分享一个树莓派延时摄影和视频制作代码

新浪微博 QQ空间 腾讯微博

心血来潮,想着做一个阳台花草生长的延时视频。阳台上正好有个树莓派,只需要一个摄像头即可。说做就做,500万像素的树莓派摄像头,包邮只需要30元。基本够够用了。接好线,固定好摄像头位置。

效果如下图:

树莓派摄像头

树莓派安装和配置摄CSI接口的摄像头不复杂,首先安装一个raspi-config软件,执行该命令,启用摄像头模块,此时就可以使用raspistill抓取照片了。如果需要使用motion等软件做实时监控,那么还需要在modules load配置文件中增加bcm2835-v4l2此配置。一切都很顺利,捕捉到第一张照片。

编写代码定时拍摄图片。因为考虑要捕捉清晨和黄昏时的光线变化,代码做了一些特殊的逻辑。在清晨和黄昏捕捉图片的频率加高,在凌晨0~5点之间,由于阳台光线不佳,摄像头采集到的照片是全黑的,因此不需要拍摄。拍摄完照片每天保存一次到HOME-NAS上面。最终定时捕捉照片的代码如下:

#!/bin/bash

mkdir /root/pics >/dev/null 2>&1
mkdir /var/piccap >/dev/null 2>&1
touch /var/piccap/lastbtime
sleeptime=60
busyinterval=3
normalinterval=30
sleepcount=0

capPic ()
{
    timestr=$(date +%Y%m%d%H%M%S)
        raspistill -t 5000 -o /root/pics/image_${timestr}.jpg -q 100 -n -rot 180
}

checkAndUpload ()
{
        lastbtime=$(cat /var/piccap/lastbtime)
        nowtime=$(date +%Y%m%d)
        if [ -z "${lastbtime}" -o "${lastbtime}" != "${nowtime}" ]
        then
                umount /mnt/homenas
                mount -t cifs -o username=User,password=Password //22.22.22.3/share /mnt/homenas/
                if [ $? -eq 0 ]
                then
                        for i in $(ls /root/pics/image_*.jpg)
                        do 
                                mv $i /mnt/homenas/piccap
                        done
                        umount /mnt/homenas
                        echo ${nowtime} > /var/piccap/lastbtime
                fi   
        fi   
}

while :
do
    checkAndUpload
    hour=$(date +%H)
    min=$(date +%M)   
    if [ ${hour} -eq 5 -a ${min} -gt 30 ] || [ ${hour} -ge 17 -a ${hour} -le 19 -o ${hour} -ge 6 -a ${hour} -le 8 ]
    then
        # 上午5点半~9点,晚上5点至8点,每隔3分钟拍摄一张。
        [ ${sleepcount} -eq 0 ] && capPic
        [ ${sleepcount} -ge ${busyinterval} ] && capPic && sleepcount=0
    elif [ ${hour} -ge 0 -a ${hour} -le 4 ]
    then
        # 凌晨0点到4点不抓取照片。
        sleepcount=0
    else
        # 其他时间段每隔30分钟抓取一张。
        [ ${sleepcount} -eq 0 ] && capPic
        [ ${sleepcount} -ge ${normalinterval} ] && capPic && sleepcount=0
    fi
    sleepcount=$(expr ${sleepcount} + 1)
    sleep ${sleeptime}
done

处理照片并生成视频的命令行为:

ffmpeg -r 3 -i img_%d.jpg -t 73 -vcodec libx264 D:/test.mp4

其中-r为帧率,-t为视频总时长,二者之积等于照片张数即可。

新浪微博 QQ空间 腾讯微博

| 1 分2 分3 分4 分5 分 (5.00- 1票)
Loading ... Loading ... | 这篇文章归档在:实用脚本, 数码硬件, 软件应用
| 标签: , , , . | 永久链接:链接 | 评论(0) |

评论

邮箱地址不会被泄露, 标记为 * 的项目必填。

8 - 2 = *



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <img alt="" src="" class=""> <pre class=""> <q cite=""> <s> <strike> <strong>

返回顶部