1. 程式人生 > >讀寫(read&write)視訊(video) 詳解 及 程式碼

讀寫(read&write)視訊(video) 詳解 及 程式碼

讀取(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() #獲取下一幀