Python中使用摄像头实现简单的延时摄影技术


Posted in Python onMarch 27, 2015

延时摄影(英语:Time-lapse photography)是以一种较低的帧率拍 下图像或者视频,然后用正常或者较快的速率播放画面的摄影技术。在一段延时摄影视频中,物体或者景物缓慢变化的过程被压缩到一个较短的时间内,呈现出平时 用肉眼无法察觉的奇异精彩的景象。延时摄影可以认为是和高速摄影相反的一个过程。延时摄影通常应用在拍摄城市风光、自然风景、天文现象、生物演变等等题材上。”

种草

最近买东西得了个小赠品,是一种可以快速生长的小草,拿回来就种在了办公桌上。今天发芽了,一时兴起打算做个延时摄影,办公室里正好有个非常老旧的640x480摄像头,于是有了下面的这个延时摄影动图(为了上传压缩了画面大小):

Python中使用摄像头实现简单的延时摄影技术

实现


需要准备的:

1) 电脑
2) 摄像头(如果电脑没有的话),淘宝上好多20以下包邮
3) Python 2.7,因为需要使用opencv,所以用Python2
4) opencv的Python binding,去官网上下载,如果不想自己编译,只要到\build\python\2.7\下面就可以找到32位和64位的cv2.pyd,把这个文件直接拷贝到\Python27\Lib\site-packages\即可

代码如下:

import cv2
import time

interval = 20  # seconds
num_frames = 500
out_fps = 24

capture = cv2.VideoCapture(0)
size =(int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
    int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
video = cv2.VideoWriter("time_lapse.avi", cv2.cv.CV_FOURCC('I','4','2','0'), out_fps, size)

# for low quality webcams, discard the starting unstable frames
for i in xrange(42):
  capture.read()

# capture frames to video
for i in xrange(num_frames):
  _, frame = capture.read()
  video.write(frame)

  ## Optional, in case you need the frames for GIF or so
  filename = '{:4}.png'.format(i).replace(' ', '0')
  cv2.imwrite(filename, frame)

  print('Frame {} is captured.'.format(i))
  time.sleep(interval)

video.release()
capture.release()

既然是简单的延时摄影,代码也是非常简单的。设定好拍摄间隔,总帧数和输出的帧率,用VideoCapture获取摄像头的图像,用VideoWriter写入视频,考虑到有些劣质摄像头在初始化的时候不稳定(比如我用的这个老式摄像头),在正式捕捉图向前可以考虑略过初始的几十帧,捕捉过程中也可以直接输出图片方便制作GIF或者其他用途。

最后再来一个铁皮盒上水滴蒸发的全过程:

Python中使用摄像头实现简单的延时摄影技术

Python 相关文章推荐
python计数排序和基数排序算法实例
Apr 25 Python
Python自动化测试工具Splinter简介和使用实例
May 13 Python
python求列表交集的方法汇总
Nov 10 Python
实例说明Python中比较运算符的使用
May 13 Python
Flask框架中密码的加盐哈希加密和验证功能的用法详解
Jun 07 Python
Python使用getpass库读取密码的示例
Oct 10 Python
对python函数签名的方法详解
Jan 22 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
Pandas分组与排序的实现
Jul 23 Python
django haystack实现全文检索的示例代码
Jun 24 Python
Django admin组件的使用
Oct 24 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
python根据出生日期返回年龄的方法
Mar 26 #Python
python获取远程图片大小和尺寸的方法
Mar 26 #Python
python使用cStringIO实现临时内存文件访问的方法
Mar 26 #Python
python使用pil生成缩略图的方法
Mar 26 #Python
python实现基于两张图片生成圆角图标效果的方法
Mar 26 #Python
python正则表达式match和search用法实例
Mar 26 #Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 #Python
You might like
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
在 IE 中调用 javascript 打开 Excel 表
2006/12/21 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
让js弹出窗口居前显示的实现方法
2013/07/10 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
js的回调函数详解
2015/01/05 Javascript
微信小程序 出现错误:{"baseresponse":{"errcode":-80002,"errmsg":""}}解决办法
2017/02/23 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
2017/05/08 jQuery
javascript实现延时显示提示框效果
2017/06/01 Javascript
vue router 配置路由的方法
2018/07/26 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
jQuery中DOM操作原则实例分析
2019/08/01 jQuery
Jquery动态列功能完整实例
2019/08/30 jQuery
跟老齐学Python之for循环语句
2014/10/02 Python
python正则实现提取电话功能
2018/02/24 Python
Python 做曲线拟合和求积分的方法
2018/12/29 Python
Python图像处理之图像的缩放、旋转与翻转实现方法示例
2019/01/04 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
python基于Selenium的web自动化框架
2019/07/14 Python
python 实现多线程下载m3u8格式视频并使用fmmpeg合并
2019/11/15 Python
Python基于pandas绘制散点图矩阵代码实例
2020/06/04 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
keras 模型参数,模型保存,中间结果输出操作
2020/07/06 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
财务管理职业生涯规划书
2014/02/26 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
车辆工程专业求职信
2014/06/14 职场文书
建筑工地大门标语
2014/06/18 职场文书
党的群众路线教育实践活动个人对照检查材料(四风)
2014/11/05 职场文书
2015年元旦主持词结束语
2014/12/14 职场文书
Python first-order-model实现让照片动起来
2022/06/25 Python