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 相关文章推荐
400多行Python代码实现了一个FTP服务器
May 10 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
全面了解python字符串和字典
Jul 07 Python
Python实现将数据写入netCDF4中的方法示例
Aug 30 Python
从运行效率与开发效率比较Python和C++
Dec 14 Python
Django框架模板注入操作示例【变量传递到模板】
Dec 19 Python
python assert的用处示例详解
Apr 01 Python
python3对接mysql数据库实例详解
Apr 30 Python
python错误调试及单元文档测试过程解析
Dec 19 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 Python
Python排序算法之插入排序及其优化方案详解
Jun 11 Python
python神经网络 使用Keras构建RNN训练
May 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中curl_multi的应用
2013/07/17 PHP
一款js和css代码压缩工具[附JAVA环境配置方法]
2010/04/16 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
用jquery实现输入框获取焦点消失文字
2013/04/27 Javascript
JavaScript基础教程之alert弹出提示框实例
2014/10/16 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
vue2.0 自定义组件的方法(vue组件的封装)
2018/06/05 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
基于vue实现微博三方登录流程解析
2020/11/04 Javascript
CentOS安装pillow报错的解决方法
2016/01/27 Python
python实时监控cpu小工具
2018/06/21 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python+mysql实现学生信息查询系统
2019/02/21 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
用Python将Excel数据导入到SQL Server的例子
2019/08/24 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
HTML5之SVG 2D入门2—图形绘制(基本形状)介绍及使用
2013/01/30 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
美国最大的城市服装和运动鞋零售商:Jimmy Jazz
2016/11/19 全球购物
西班牙拥有最佳品牌的动物商店:Animalear.com
2018/01/05 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
MySQL面试题
2014/01/12 面试题
应用化学专业职业生涯规划书
2013/12/31 职场文书
车贷收入证明范本
2014/01/09 职场文书
总结表彰大会主持词
2014/03/26 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
地震捐款简报
2015/07/21 职场文书
用Python实现Newton插值法
2021/04/17 Python
python文件名批量重命名脚本实例代码
2021/04/22 Python
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏
CSS 鼠标选中文字后改变背景色的实现代码
2023/05/21 HTML / CSS