读取(read&write)视频(video) 详解 及 代码
本文地址: http://blog.csdn.net/caroline_wendy/article/details/17084397
OpenCV读取视频, 获得视频的格式, 读取视频的每一帧, 播放控制; 使用VideoCapture类和read()函数;
获取视频属性(码率\尺寸)使用VideoCapture的get()方法;
"avi"是所有系统都会支持的视频格式;
OpenCV写视频, 需要指定视频的格式, 可以从原视频中获取; 使用VideoWriter类和write()函数
VideoWriter类写入视频时, 需要提供视频名, 格式, 帧率(fps), 帧的尺寸等参数;
视频格式包括:
I420(适合处理大文件) -> .avi;
PIMI -> .avi;
MJPG -> .avi & .mp4
THEO -> .ogv;
FLV1(flash video, 流媒体视频) -> .flv
注意: 使用OpenCV, cv2的方法, 和cv2.cv.XXX的参数;
代码如下:
# -*- coding: utf-8 -*-
#=================
#File: PyOpenCV.py
#Author: Wendy
#Date: 2013-12-03
#=================
#eclipse, python2.7, opencv 2.4.6
import cv2
#获得视频的格式
videoCapture = cv2.VideoCapture('oto.avi')
#获得码率及尺寸
fps = videoCapture.get(cv2.cv.CV_CAP_PROP_FPS)
size = (int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)),
int(videoCapture.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)))
#指定写视频的格式, I420-avi, MJPG-mp4
videoWriter = cv2.VideoWriter('oto_other.mp4', cv2.cv.CV_FOURCC('M', 'J', 'P', 'G'), fps, size)
#读帧
success, frame = videoCapture.read()
while success :
cv2.imshow("Oto Video", frame) #显示
cv2.waitKey(1000/int(fps)) #延迟
videoWriter.write(frame) #写视频帧
success, frame = videoCapture.read() #获取下一帧