本期教大家将编写一个小脚本用树莓派来捕获多个图像,然后可以将这些图像组合成动画GIF,使用延时摄影功能,可以在几秒钟内查看非常慢的事情。

我们需要用到ImageMagick,这是一个用于图像处理的命令行程序。要安装ImageMagick,请在终端窗口中运行以下命令:

sudo apt-get update
sudo apt-get install imagemagick -y

使用树莓派的延时动画。延时摄影使用长时间拍摄的多个图像,然后将这些图像拼接在一起以产生动画的图像序列。如果以前从未见过延时,我给大家找到一张GIF图可以直观的看到。

使用拍照功能,需要脚本的支持,我们先编写一个脚本。

#/home/pi/timelapse.py

from picamera import PiCamera

camera = PiCamera()
camera.capture('/home/pi/Desktop/image.jpg')

保存代码,命令行运行,python /home/pi/timelapse.py

就可看看桌面有一张名叫image.jpg的图片了。

 

拍摄多张图片

可以使用相机模块拍摄多个图像,方法是使用循环捕获图像。修改您的代码文件以包含for循环。在此示例中,Pi Camera将捕获10个图像:

from picamera import PiCamera

camera = PiCamera()

for i in range():
camera.capture('image.jpg')

再次保存脚本并运行(F5)程序。然后查看文件管理器,查看已创建的内容,如果你看到只有一张图片,这是拍摄的最后一张图片。这是因为每个图像具有相同的文件名,所以它被下一个拍摄的图像覆盖了。稍微修改脚本来解决问题:

from picamera import PiCamera

camera = PiCamera()

for i in range():
camera.capture('image{0:04d}.jpg'.format(i))

保存运行,这时再查看,就可以看到10张图片了。

制作GIF图

我们看看如何将之前拍摄的连续的图片转换为动画GIF。这时我们就需要ImageMagick。ImageMagick是一个命令行程序,可用于处理图像。首先,打开终端(Ctrl+Alt+t)并输入以下内容:

convert -delay  -loop  image*.jpg animation.gif

命令 -delay选项 设置帧之间的时间量(以百分之一秒为单位)。-loop选项设置GIF循环的次数。在这里0告诉它永远循环。需要一些时间来运行,等待完成,应该可以在文件管理器中看到 animation.gif 文件,双击它并在图像查看器中观看动画。这可能是一个相当大的文件。与所有命令行程序一样,可以在Python中调用ImageMagick。只需要使用os库,如下所示:

from picamera import PiCamera
from os import system camera = PiCamera() for i in range():
camera.capture('image{0:04d}.jpg'.format(i)) system('convert -delay 10 -loop 0 image*.jpg animation.gif')
print('done')

这里生成的文件将是非常大的文件,下面教大家如何压缩减小文件大小。重新打开之前的代码文件,我们做如下修改:

from picamera import PiCamera
from os import system camera = PiCamera()
camera.resolution = (, ) for i in range():
camera.capture('image{0:04d}.jpg'.format(i)) system('convert -delay 10 -loop 0 image*.jpg animation.gif')

重新设置了图像的分辨率。

我们在添加延时,来拍摄间隔的照片。我们重新修改代码如下:

from picamera import PiCamera
from os import system
from time import sleep camera = PiCamera()
camera.resolution = (, ) for i in range():
camera.capture('image{0:04d}.jpg'.format(i))
sleep() system('convert -delay 10 -loop 0 image*.jpg animation.gif')

我们设置成每60秒拍摄一次照片,总共拍摄10张照片。现在可以将range()和sleep()函数的值修改为适合你自己的值。如果想捕捉一朵花的开放,那么一分钟或几分钟的图片就足够了。如果想拍下水果腐烂的图片则需要时间久一点。只需运行脚本,然后坐下来等待创建GIF。

关注一下,更多精彩,不容错过!

使用树莓派拍摄延时动画,制作GIF图的更多相关文章

  1. Laya的动画制作,整图动画,序列图动画,时间轴动画,龙骨动画

    参考: Laya动画基础 Egret帧动画工具类 版本:2.1.1.1 序列图动画 白鹭的序列图动画,使用TexureMerger合图,然后使用MovieClip类播放. Laya的话,使用图集打包工 ...

  2. 分享2D Unity游戏的动画制作经验

    作者:Alex Rose Unity近期宣布推出额外的2D游戏支持,加入了Box 2D物理和一个精灵管理器. 但这里还是有些技巧须要牢记在心.逐帧更改图像仅仅是动画制作的冰山一角,若要让你的游戏出色执 ...

  3. 关于HTML5在动画制作工具Animatron的一些问题

    Animatron是国外一款在线HTML5动画制作工具,网址:www.animatron.com 当然,想使用的话,是需要FQ的. 用animatron制作好的动画是可以下载为代码和GIF的,这时候付 ...

  4. 手游[追忆之青]动画导演:2D动画制作技巧

    转自:http://www.gamelook.com.cn/2016/09/264591 GameLook报道/由一般法人计算机娱乐协会(CESA)主办的CEDEC2016日前在日本横滨举行,诸多开发 ...

  5. 纯干货!live2d动画制作简述以及踩坑

    本文来自网易云社区,转载务必请注明出处. 1. 概述 live2d是由日本Cybernoids公司开发,通过扭曲像素位置营造伪3d空间感的二维动画软件.官网下载安装包直接安装可以得到两种软件,分别是C ...

  6. CSS3动画制作

    CSS3动画制作 rotate 绕中心旋转 fadeInPendingFadeOutUp 先渐现,停留2s,再向上滑动并逐渐消失 fadeInUp2D 向上滑动并渐现, 因Animate.css的fa ...

  7. 在Excel中制作雷达图

    雷达图的作用 雷达图是专门用来进行多指标体系比较分析的专业图表.从雷达图中可以看出指标的实际值与参照值的偏离程度,从而为分析者提供有益的信息.雷达图一般用于成绩展示.效果对比量化.多维数据对比等等,只 ...

  8. 用Excel制作热图(heatmap)的方法

    http://jingyan.baidu.com/article/64d05a0240ec75de55f73bd8.html 利用Excel 2010及以上版本的"条件格式"--& ...

  9. excel具有制作甘特图的功能

    1.Excel最大功能:数据处理.统计分析. 2.数据有效性验证: 长数字输入方法,文本前面加英文"'"(单引号)或使用文本转换. 身份证号:数据.数据有效性.文本长度. 性别:数 ...

随机推荐

  1. cache2go开源项目的回调方法使用

    https://github.com/muesli/cache2go 结构体 type CacheTable struct { sync.RWMutex . name string items map ...

  2. Java学习---传输安全设计

    1.计算机安全的概念 用于保护数据和阻止Hacker的工具统称为计算机安全(Computer Security).信息安全最基本的方法就是利用加密信息防止未授权的人窃听,加密是以某种特殊的算法改变原有 ...

  3. CSMA/CD 续

    重要特性 以太网不能进行全双工通信而只能进行双向交替通信(半双工通信).每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性. 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率 ...

  4. Microsoft Windows XP SP3 官方原版镜像下载,绝对原版加系列号!

    转:http://blog.sina.com.cn/s/blog_638c2e010100op5z.html 写在前面:1. VOL是Volume Licensing for Organization ...

  5. openresty及lua的随机函数

    我们都知道,所谓的随机都是伪随机,随机的结果是由随机算法和随机种子决定的. 所以,当我们没有初始化的时候,如果直接使用math.random(),那么出来的值肯定是每次都一样,因为种子等于0. 因此, ...

  6. 寒假关于计算机课程的学习计划(第二次作业<二>)

    由于自己刚从紧张的高中学习中解脱出来,进入大学学习意识不够重视,导致学业与别人相差较大,特别是C语言,所以打算寒假主要先补一补C语言.自己在网上查找了很多资料,包括浙江大学翁凯老师在网易云课堂讲的&l ...

  7. Eclipse PHPEclipse 配置

    最近偶来兴致趁着有些时间,看了看php的书. 说到php就不得不提php的开发环境了,一般的都是采用apache做服务器.mysql做数据库,再加上php组合成一个完备的运行环境,但是好像没有写代码的 ...

  8. yarn logs -applicationId [applicationID]

    yarn logs -applicationId application_1435648583743_0001 报错: tmp/logs/.../application_1435648583743_0 ...

  9. JavaScript浏览器对象模型(BOM)之location对象

    一.概述: location 是 BOM 对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能. 事实上,location 对象是 window 对象的属性,也是 document ...

  10. Odoo中报表PDF样式出错的解决办法

    如果发现生成的pdf样式不对,那可能是wkhtmltopdf没办法访问web服务器导致的.wkhtmltopdf进程使用web.base.url作为根url来生成对应文件路径,但这个地址是每次管理员登 ...