#!/usr/bin/env python
# -*- coding:utf-8 -*-
#-----------------------------------------------------------------------------------------------------------------------
#三、视频功能(延时摄影)
#-----------------------------------------------------------------------------------------------------------------------
import cv2
import time
interval=2 #捕获图像的间隔,单位:秒
num_frames=15 #捕获图像的总帧数
out_fps=24 #输出文件的帧率
#打开默认的相机
cap=cv2.VideoCapture(0) #VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频
#获取捕获的分辨率
size=(int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))#OpenCV 2.4.13.7
#设置要保存的视频的编码、分辨率和频率
video=cv2.VideoWriter(
"D:time_lapse.avi",#可以更改文件保存位置,默认保存在与程序相同的文件夹中
-1,# #cv2.VideoWriter()第二个参数设置为-1,程序运行时则会交互地弹出一个对话框让你从系统已有的编码中选择一个。
# cv2.VideoWriter_fourcc("M","P","4","2"),
out_fps,
size
)
# 视频编码类型
# cv2.VideoWriter_fourcc('X','V','I','D') MPEG-4 编码类型
# cv2.VideoWriter_fourcc('I','4','2','0') YUY编码类型
# cv2.VideoWriter_fourcc('P','I','M','I') MPEG-1 编码类型
# cv2.VideoWriter_fourcc('T','H','E','O') Ogg Vorbis类型,文件名为.ogv
# cv2.VideoWriter_fourcc('F','L','V','1') Flask视频,文件名为.flv
#对于一些低画质的摄像头,前面的帧可能不稳定,略过
for i in range(42):
cap.read()
#开始捕获,通过read函数获取捕获的帧
try:
for i in range(num_frames):
_,frame=cap.read()
video.write(frame)
# 如果希望每一帧也存成文件,比如制作GIF,则取消下面注释
# filename="{:0>6d}.png".format(i)
# cv2.imwrite(filename,frame)
print("Frame {} is captured.".format(i))
time.sleep(interval)
except KeyboardInterrupt:#用来获取用户 Ctrl+C 的终止
#提前停止捕获
print("Stopped! {}/{} frames captured!".format(i,num_frames))
#释放资源并写入视频文件
video.release()
cap.release()
python 延时_Python&OpenCV学习之旅(三)视频功能(延时摄影)
最新推荐文章于 2023-11-01 13:26:31 发布
本文介绍了如何使用Python的OpenCV库,通过控制摄像头捕获连续帧,并利用VideoWriter函数将这些帧合成延时视频。重点讲解了参数设置、帧率选择和视频编码的过程,适合初学者了解视频处理基础。
摘要由CSDN通过智能技术生成