c语言延时函数delay延时一秒_使用树莓派拍摄延时动画,制作GIF图
本期教大家将编写一个小脚本用树莓派来捕获多个图像,然后可以将这些图像组合成动画GIF,使用延时摄影功能,可以在几秒钟内查看非常慢的事情。
我们需要用到ImageMagick,这是一个用于图像处理的命令行程序。要安装ImageMagick,请在终端窗口中运行以下命令:
sudo apt-get updatesudo apt-get install imagemagick -y
使用树莓派的延时动画。延时摄影使用长时间拍摄的多个图像,然后将这些图像拼接在一起以产生动画的图像序列。如果以前从未见过延时,我给大家找到一张GIF图可以直观的看到。
使用拍照功能,需要脚本的支持,我们先编写一个脚本。
#/home/pi/timelapse.pyfrom picamera import PiCameracamera = PiCamera()
camera.capture('/home/pi/Desktop/image.jpg')
保存代码,命令行运行,python /home/pi/timelapse
.py
就可看看桌面有一张名叫image.jpg的图片了。
保存代码,命令行运行,python /home/pi/timelapse
.py
就可看看桌面有一张名叫image.jpg的图片了。
拍摄多张图片
可以使用相机模块拍摄多个图像,方法是使用循环捕获图像。修改您的代码文件以包含for循环。在此示例中,Pi Camera将捕获10个图像:
from picamera import PiCameracamera = PiCamera()for i in range(10):camera.capture('image.jpg')
再次保存脚本并运行(F5)程序。然后查看文件管理器,查看已创建的内容,如果你看到只有一张图片,这是拍摄的最后一张图片。这是因为每个图像具有相同的文件名,所以它被下一个拍摄的图像覆盖了。稍微修改脚本来解决问题:
from picamera import PiCameracamera = PiCamera()for i in range(10):camera.capture('image{0:04d}.jpg'.format(i))
保存运行,这时再查看,就可以看到10张图片了。
制作GIF图
我们看看如何将之前拍摄的连续的图片转换为动画GIF。这时我们就需要ImageMagick。ImageMagick是一个命令行程序,可用于处理图像。首先,打开终端(Ctrl+Alt+t)并输入以下内容:
convert -delay 10 -loop 0 image*.jpg animation.gif
命令 -delay选项 设置帧之间的时间量(以百分之一秒为单位)。-loop选项设置GIF循环的次数。在这里0告诉它永远循环。需要一些时间来运行,等待完成,应该可以在文件管理器中看到 animation.gif 文件,双击它并在图像查看器中观看动画。这可能是一个相当大的文件。与所有命令行程序一样,可以在Python中调用ImageMagick。只需要使用os库,如下所示:
from picamera import PiCamera
from os import systemcamera = PiCamera()for i in range(10):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 systemcamera = PiCamera()
camera.resolution = (1024, 768)for i in range(10):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 sleepcamera = PiCamera()
camera.resolution = (1024, 768)for i in range(10):camera.capture('image{0:04d}.jpg'.format(i))sleep(60)system('convert -delay 10 -loop 0 image*.jpg animation.gif')
from picamera import PiCamera
from os import system
from time import sleepcamera = PiCamera()
camera.resolution = (1024, 768)for i in range(10):camera.capture('image{0:04d}.jpg'.format(i))sleep(60)system('convert -delay 10 -loop 0 image*.jpg animation.gif')
我们设置成每60秒拍摄一次照片,总共拍摄10张照片。现在可以将range()和sleep()函数的值修改为适合你自己的值。如果想捕捉一朵花的开放,那么一分钟或几分钟的图片就足够了。如果想拍下水果腐烂的图片则需要时间久一点。只需运行脚本,然后坐下来等待创建GIF。
关注一下,更多精彩,不容错过!
c语言延时函数delay延时一秒_使用树莓派拍摄延时动画,制作GIF图相关推荐
- c语言延时函数delay延时一秒_IMX6UL裸机实现C语言LED实验
C 语言部分有两个文件 main.c 和 main.h,main.h 里面主要是定义的寄存器地址,在 main.h里面输入代码: #ifndef MAIN_H #define MAIN_H1 /*2 ...
- 简述一下延时函数delay怎么用
void delay(unsigned int t) //括号里面的是参数,可以定义在函数前面,这里为了方便就定义在这里{while(t--): //将t定义为无符号整型,16位,是为了能延时更长时间 ...
- LPC1768配置系统延时函数(10纳秒级别和1MS级别)
最近需要用到一个高精度的延时函数,且时间刻度比较小(纳秒),在查看了寄存器手册和网友的代码以后写了以下两个延时,分别是10纳秒和1毫秒级别的延时函数. 如下: void Delay_10ns(uint ...
- 单片机自定义延时函数Delay取值详解
我们想实现一个定时延时函数,在单片机里并没有什么sleep,需要我们自己实现. 延时函数跟 晶振频率 有很大的关系,因为晶振频率影响程序执行速度. 1.打开Keil 4 - Target Option ...
- 11kw星三角启动延时几秒_星三角时间继电器延时时间
星三角时间继电器延时时间 星三角启动电路中时间继电器只用一个延时闭合的线路图 就是加一个中间继电器. 时间继电器(time relay)是指当加入(或去掉)输入的动作信号后,其输出电路需经过规定的准确 ...
- 使用树莓派拍摄延时摄影视频
使用树莓派摄像头拍摄延时摄影视频 最近用树莓派和自带的摄像头试了试拍摄延时摄影并合成视频,拍摄使用的是raspistill命令自带的间隔拍摄功能,合成主要使用了ffmpeg. 我这里用的是树莓派4B, ...
- fun函数是什么php,c语言fun函数有什么例题?_后端开发
python如何求一组数的最大值?_后端开发 python求一组数最大值的方法:首先定义一组数和变量a,并赋值[a=list(0)]:然后用range循环查询,如果有数大于[list=(0)],则传值 ...
- c语言的主函数名是什么,c语言主函数名是什么?_后端开发
python语言属于汇编语言吗?_后端开发 python语言不是汇编语言.python是高级语言.汇编语言是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言. C语言主 ...
- c16语言延时函数delay,《linux设备驱动开发详解》笔记——10中断与时钟
10.1 中断与定时器 中断一般有如下类型: 内部中断和外部中断:内部中断来自CPU,例如软件中断指令.溢出.除0错误等:外部中断有外部设备触发 可屏蔽中断和不可屏蔽中断 向量中断和非向量中断,ARM ...
- 延时函数delay与sleep有什么区别呢?
在VC中使用带上头文件 #include <windows.h> 注意: 在VC中Sleep中的第一个英文字符为大写的"S" 在标准C中是sleep, 不要大写.. 下 ...
最新文章
- iphone8p百度云认证_探秘百度数据工厂Pingo的多存储后端数据联合查询技术
- 递归求解并生成哈夫曼编码的代码实现
- 滴滴哆啦A梦源码解析
- java中sleep()、wait()相同与不同详解
- '+' 拼接字符串引起的小事故
- This Jenkins instance appears to be offline
- 炼丹知识点:模型评估里的陷阱
- 委托声明----委托实例化-----委托调用
- 【leetcode】910. Smallest Range II
- 那些年黑了你的微软BUG
- 诗人最近都很忙,忙着去远方了
- 思科模拟器配置静态路由
- ERP应用优势和劣势有哪些
- 频繁默认网关不可用_win7系统默认网关不可用频繁掉线的解决方法
- 奈奎斯特定理和香农定理解释
- 莱鸟学spss数据分析之第六章---描述性分析
- matlab绘制心形图
- 一个女孩的工作经历告诉我们
- 利用osg::ClipPlane 对节点进行多边形裁切
- 【markdown】表格合并单元格