山西坦达清洁设备有限公司

现在的位置: 主页 > 在线留言 > 文章列表

文章正文

用Python和摄像头制作简单的延时摄影

作者:山西坦达清洁设备有限公司 来源:www.sxtdqj.com 发布时间:2017-09-07 12:50:58
用Python和摄像头制作简单的延时摄影

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

--引自百度百科

种草

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

实现

需要准备的:

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\即可

代码如下:

1 import cv2

2 import time

3

4 interval = 20 # seconds

5 num_frames = 500

6 out_fps = 24

7

8 capture = cv2.VideoCapture(0)

9 size =(int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),

10 int(capture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))

11 video = cv2.VideoWriter("time_lapse.avi", cv2.cv.CV_FOURCC('I','4','2','0'), out_fps, size)

12

13 # for low quality webcams, discard the starting unstable frames

14 for i in xrange(42):

15 capture.read()

16

17 # capture frames to video

18 for i in xrange(num_frames):

19 _, frame = capture.read()

20 video.write(frame)

21

22 ## Optional, in case you need the frames for GIF or so

23 filename = '{:4}.png'.format(i).replace(' ', '0')

24 cv2.imwrite(filename, frame)

25

26 print('Frame {} is captured.'.format(i))

27 time.sleep(interval)

28

29 video.release()

30 capture.release()

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

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页制作 https://www.feimao666.com


COPYRIGHT © 2015 山西坦达清洁设备有限公司 ALL RIGHTS RESERVED.
网站地图 技术支持:肥猫科技
精彩专题:网站建设
购买本站友情链接、项目合作请联系客服QQ:2500-38-100