Python:视频截取

本博文介绍的是使用Python和opencv实现对视频的截取(提取视频中的部分画面)。

1、读取视频

Python可以通过opencv的VideoCapture()函数实现对视频,该函数的参数为0则是读取摄像头,为地址则是读取该地址的视频,具体使用方法如下所示:videoCapture = cv2.VideoCapture("E://code//test.mp4")。一般在读取视频之后,会加上一个判断,判断视频是否读取成功,即videoCapture.isOpened(),该值为真,则读取成功。在判断读取视频成功之后,使用videoCapture.read()函数循环读取视频的每一帧。

2、写入视频

与读取视频类似,写入视频可通过VideoWriter()函数创建一个新的视频,该函数有四个参数,从左到右分别是视频地址、编码格式、帧率、每帧画面的尺寸(宽、高),具体使用方法如下所示:videoWriter = cv2.VideoWriter('E://code//test2.avi', cv2.cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, size)。需要注意的一点是,该函数仅支持写入avi格式的视频文件,且文件大小需小于2G。然后通过videoWriter.write(frame)将每一帧写入视频。

3、完整代码

作为常在网上找代码的一员,我深知说的再多不如上份代码,所以最后附上读取视频、然后对视频部分画面进行截取,并最终写入新视频的完整代码。
#! /usr/bin/env python
#coding=utf-8
import cv2
import numpy as np
import cv2.cv as cv
videoCapture = cv2.VideoCapture("E://code//test.mp4") # 从文件读取视频
# 判断视频是否打开
if (videoCapture.isOpened()):
    print 'Open'
else:
    print 'Fail to open!'

fps = videoCapture.get(cv2.cv.CV_CAP_PROP_FPS)  #获取原视频的帧率

size = (int(600), int(1536))#自定义需要截取的画面的大小
#size = (int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))#获取原视频帧的大小
videoWriter = cv2.VideoWriter('E://code//test2.avi', cv2.cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, size)
success, frame = videoCapture.read()#读取第一帧

while success:
    frame = frame[0:1536,1200:1800]#截取画面
    videoWriter.write(frame)#将截取到的画面写入“新视频”
    success, frame = videoCapture.read()#循环读取下一帧
videoCapture.release()


如有错误之处,还望多多指教,谢谢。
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值