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

作者:junjie 时间:2023-10-24 01:31:04 

延时摄影(英语: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,摄像头,延时摄影
0
投稿

猜你喜欢

  • 利用PyQt5制作一个豆瓣电影信息查看器

    2021-03-05 05:57:28
  • JavaScript Base64编码和解码,实现URL参数传递。

    2024-04-22 22:45:32
  • Python如何使用opencv进行手势识别详解

    2021-11-06 07:12:23
  • python中map的基本用法示例

    2023-09-24 15:56:26
  • 聊一聊MyISAM和InnoDB的区别

    2024-01-21 00:55:33
  • Python实现日志实时监测的示例详解

    2023-01-06 15:48:29
  • 详解 python logging日志模块

    2021-05-07 19:59:01
  • JS实现局部选择打印和局部不选择打印

    2024-05-11 09:05:49
  • SQL SERVER 分组求和sql语句

    2024-01-13 04:43:16
  • 深入浅析python3 依赖倒置原则(示例代码)

    2021-07-30 02:27:33
  • PHP 对象继承原理与简单用法示例

    2023-11-21 21:57:32
  • laravel 实现划分admin和home 模块分组

    2024-05-22 10:02:03
  • SQL2005 学习笔记 窗口函数(OVER)

    2024-01-27 09:50:49
  • ASP网站Server object error的解决办法

    2008-11-07 15:57:00
  • python2.x实现人民币转大写人民币

    2023-06-26 10:35:53
  • PHP中error_reporting()函数的用法(修改PHP屏蔽错误)

    2023-11-20 01:08:17
  • SQL语句执行超时引发网站首页访问故障问题

    2024-01-29 01:33:27
  • python非标准时间的转换

    2022-04-12 17:37:52
  • 详解Go语言中的数据库操作

    2024-01-15 19:30:23
  • Pycharm 2to3配置,python2转python3方式

    2021-07-05 21:39:50
  • asp之家 网络编程 m.aspxhome.com