本期教大家将编写一个小脚本用树莓派来捕获多个图像,然后可以将这些图像组合成动画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。

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

最新文章

  1. ORA-12560: TNS: 协议适配器错误
  2. MVVM架构~mvc,mvp,mvvm大话开篇
  3. sizzle源码分析 (2)ID 类 tag querySelectorAll 快速匹配
  4. 安装scikit-learn过程记录
  5. WinForm------GridControl显示每行的Indicator中的行号
  6. Unity时钟定时器插件
  7. SignalR初体验
  8. caffe简易上手指南(一)—— 运行cifar例子
  9. Django filter中用contains 在mysql中的问题
  10. HTTP学习
  11. PHP中 HTTP_HOST 和 SERVER_NAME 的区别
  12. Codeforces Global Round 1 A~F
  13. (八)控件介绍,QLable
  14. IntelliJ IDEA重启Tomcat
  15. 3A
  16. apt-get update 问题
  17. collect_list/collect_set(列转行)
  18. 关于AutoMApping 实体映射
  19. android -------- 安装APK报错:Installation error: INSTALL_FAILED_UPDATE_INCOMPATIBLE解决方法
  20. jQuery $.each()常见的几种使用方法

热门文章

  1. java笔记--匿名内部类和静态内部类的理解和使用
  2. leetcode Ch1-Search
  3. Nginx配置文件nginx.conf详细说明文档
  4. except but
  5. iOS自动化-- 常用iOS命令
  6. 基于HP DL388 Gen 9服务器基本配置(ESXI 6.5)
  7. PHP扩展功能----发送邮件
  8. vue每次请求加头部(shiro+vue)
  9. 获取 当前显示的 UIViewController
  10. 学习VCL之路(1)