Python中使用摄像头实现简单的延时摄影技术
作者:junjie 发布时间:2023-10-24 01:31:04
标签: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\即可
代码如下:
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或者其他用途。
最后再来一个铁皮盒上水滴蒸发的全过程:


猜你喜欢
- Django 开发项目是很快的,有多快?看完本篇文章,你就知道了。安装 Django前提条件:已安装 Python。Django 使用 pi
- 在给blog加上无刷新搜索和即时验证检测后,又看了下代码,感觉太过麻烦,就把XMLHttpRequest请求封装到一个类里面,用起来方便多了
- Laplace分布定义:下面先给出Laplace分布实现代码:import matplotlib.pyplot as pltimport n
- 下载驱动器http://chromedriver.storage.googleapis.com/index.html下载与谷歌版本相同或最近
- ERROR 1819 (HY000): Your password does not satisfy the current policy
- 废话不多说,大家直接看代码吧!"""遗传算法实现求函数极大值—Zjh"""imp
- SESSION会话开启时,会首先发送一个对浏览器的唯一标识session_id的cookie(名字为PHPSESSID可以通过session
- A.截取从字符串左边开始N个字符 Declare @S1 varchar(100) Select @S1='http://www.x
- 引子任务调度(Task Scheduling)是很多软件系统中的重要组成部分,字面上的意思是按照一定要求分配运行一些通常时间较长的脚本或程序
- 本文实例分析了Python字符串格式化输出方法。分享给大家供大家参考,具体如下:我们格式化构建字符串可以有3种方法:1 元组占位符m = &
- SELECT * from table where username like '%陈哈哈%' and hobby like
- 在本地windows机器开发的Django项目运行正常,放到服务器上后响应超慢,花了一整个工作日没找到原因(非常绝望),又花了一整个周末才找
- 那么我们现在开始进行安装配置: 1.一般网上
- 1. 获取系统当前时间MySQL 版本为 5.7,详细的时间函数可以参考 MySQL 官方文档 在这里1.1. 获取 YYYY-MM-DD
- 如下所示:#coding=utf-8#读取图片 返回图片某像素点的b,g,r值import cv2import numpy as npimg
- 当然,如果你的网站文章中有图片,那么请记得一定要打上自己的LOGO,而且这个LOGO不要固定在这些图片的某个角落里,一定要随机出现在图片的任
- 一、基本使用最近研究了一下 el-upload组件 踩了一些小坑 写起来大家学习一下很经常的一件事情 经常会去直接拷贝 elem
- 本文是从百度百科中摘录出来的,asp在it中还有Application Service Provider,也就是应用服务供应商的意思。概述A
- 鼠标经过超链时的提示图层源码运行代码框<script>var oPopup = window.createPopup();fun
- 图片优化1、图片大小优化,部分图片使用WebP(需要考虑webp兼容性)在线生成,如智图、又拍云gulp生成,gulp-webp或gulp-