如何使用Raspberry Pi和DSLR或USB网络摄像头捕获延时摄影

观看云层移动或幼苗生长。延时摄影确实可以带给您世界在宏观层面上的运作方式的感知,这超出了人类正常的时间体验所能想到的范围。或换句话说:它可以使观看油漆变干变得非常有趣。不幸的是,像Genie这样的专业延时摄影设备(同时增加了旋转或移动相机的功能)的价格可能高达$ 1000。今天,我们将只用Raspberry Pi制作一个基本的延时摄影机控制器,用于DSLR或USB网络摄像头。

请确保也检查我们所有其他出色的Raspberry Pi项目。

DSLR

像往常一样,我们使用Pi进行的所有工作都将通过SSH命令行完成,如果您已经存储,则可以使用具有相同凭据的SFTP来抓取文件他们在Pi而不是相机上。如果不确定Pi的IP地址是什么,请登录路由器并查看当前连接的设备列表-它应该正确报告自身。

首先安装一些必需的软件。 :

sudo apt-get install gphoto2sudo apt-get install imagemagick

GPhoto2是一个命令行实用程序,可直接与受支持的DSLR相机对接(在此处查看完整列表)。我使用了佳能Rebel T4i / 650D。现在,通过USB将您的相机连接到Pi。

由于我使用了自动ISO值和AV模式,因此设置相对简单,我们可以仅使用命令行捕获该系列–该实用程序包括内置时间流逝参数。这是您可以用来测试功能的最基本命令:

gphoto2 --capture-image-and-download

会将文件传输到您的Pi,或

gphoto2 --capture-image

以将图像保留在相机上。流行音乐为8 MB时,最好将它们保留在相机上并在PC或Mac上进行事后拼接电影。

重要提示:默认情况下,图像是保存到SD-RAM,而不是相机中的存储卡。意味着您将失去所有这些(我从经验上讲)。为了确保它们实际保存,我们需要首先设置捕获目标:

gphoto2 --get-config /main/settings/capturetarget

查看它输出的列表,并将目标设置如下,用显示为以下内容的任意一个替换 1 您的卡。

gphoto2 --set-config /main/settings/capturetarget=1

要以延时模式捕获,请附加 -F -I 以指定帧的总数< / em>以及每个对象之间的时间间隔。在此示例中,每30秒捕获一次,总共1440帧,当制作成24 FPS影片时,大约等于一分钟。我认为相机的电池不会持续这么长时间,但是我会看到有多少。

gphoto2 --capture-image -F 1440 -I 30

请记住一个怪癖;命令完成后,相机可能会关闭并变得无响应–您需要手动打开电源开关(至少在我的型号上如此)。在使用时,这在现场并不是问题,但是出于测试目的,这非常烦人。如果您知道解决方法,请在评论中让我知道!

制作电影

将文件传输到台式机进行处理。在Mac上,我发现最简单的方法是使用命令行,但是首先需要安装XCode, Homebrew MPlayer 。为此,请先从App Store下载Xcode(免费),然后从首选项->下载标签,启用命令行工具

然后运行(一次运行):

ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)brew doctorbrew install mplayer

您现在应该已经安装了必要的编码组件。运行以下命令,首先创建捕获的.jpg文件的列表,然后将该列表提供给mencoder(用于创建视频的实用程序)。如果您希望电影快点播放,请更改FPS值。

cd <directory with your time-lapse photos>ls *.jpg > list.txtmencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt

这就是我最终得到的结果,使用24 FPS,从早上到下午中午每分钟拍摄330张。英国的天气真的很糟糕,全天每5分钟从晴天到阴天。感叹。

要在Windows中编码电影,或者如果您更喜欢使用GUI,请下载Avidemux,然后按照下面的视频教程进行操作。确保您的照片已顺序编号。

https://www.youtube.com/watch?v=GZmkfk-YrG4#t=73

使用USB网络摄像头

当然,并不是每个人都有单反相机,但您也可以使用现成的USB网络摄像头进行延时摄影,而不是为Raspberry Pi购买昂贵的官方摄像头模块。 PS3 Eye在PC或Mac上正常工作通常很麻烦,但在Pi上开箱即用。您可能需要使用有源的USB集线器,并且对相机的支持还很粗略。 / video0列出如下:

然后我们可以继续安装网络摄像头捕获软件并进行测试。

sudo apt-get install fswebcam
fswebcam -d /dev/video0 -r 640x480 test.jpeg

使用以下文件删除文件:

rm test.jpg

进行一些测试以使您正确定位相机,然后我们将使用延时脚本。

mkdir timelapsenano runtimelapse

粘贴以下内容:

#!/bin/bash# Timelapse controller for USB webcamDIR=/home/pi/timelapsex=1while [ $x -le 1440 ]; dofilename=$(date -u +"%d%m%Y_%H%M-%S").jpgfswebcam -d /dev/video0 -r 640x480 $DIR/$filenamex=$(( $x + 1 ))sleep 10;done;

出于测试目的,我将两次拍摄之间的等待时间设置为10秒。实际开始捕获时,您可能希望将其更改为每分钟。更改以下行以确定要捕获的帧数,在示例中将其设置为1440:

while [ $x -le 1440 ]; do

要使脚本可执行,请使用:

chmod 755 runtimelapse

然后使用以下命令运行:

./runtimelapse

制作电影

仍然在SSH命令行上,我们将尝试直接在Pi上拼接电影-如果您已经拍摄了数千张照片并且您的网络摄像头分辨率更高,您可能会发现这很慢,在这种情况下,请滚动至DSLR的电影说明,然后使用SFTP将文件传输到PC。

cd timelapsels *.jpg > list.txtsudo apt-get install mencodermencoder -nosound -ovc lavc -lavcopts vcodec=mpeg4:aspect=16/9:vbitrate=8000000 -vf scale=640:480 -o timelapse.avi -mf type=jpeg:fps=24 mf://@list.txt

如果一切正常,但您获得了0 KB文件输出,这意味着设备的temp文件夹中没有足够的空间。我以干净的安装方式解决了这个问题,并再次扩展了根系统-BTSync似乎弄乱了一些临时文件。

这是USB网络摄像头的完整场景,从傍晚到天黑。

这比我想象的要容易得多,并且在评论中找到详细说明更简单方法的人也不会感到惊讶!尝试一下它,以一种令人难以理解的迷人生活观,并在评论或其他特别引人入胜的延时视频中分享指向您创作的链接。

标签: 摄影 Raspberry Pi