python opencv视频读写,视频截取

video_name = 'parking_video.mp4'
cap = cv2.VideoCapture(video_name)
count = 0
# Define the codec and create VideoWriter object.The output is stored in 'outpy.avi' file.

fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, size)

ret, image = cap.read() #从视频中读取一张张的图片

while ret:
        
        .................................
        .................................#(各种操作,生成新的图片流)
        .................................        

        out.write(new_image)#保存一张张图片流,最终形成视频
        ret, image = cap.read() #从视频中读取一张张的图片

cv2.destroyAllWindows()
cap.release()

首先我们使用cap = cv2.VideoCapture(video_name),来读取视频

 

fps = cap.get(cv2.CAP_PROP_FPS)

获得输入视频流的帧率,保持输出视频跟输入视频的一致性


size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))

获取输入视频流的长宽大小,保持输出视频跟输入视频的一致性


out = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, size)

创建用于输出视频的out,

第一个参数是输出视频名称,第二个是VideoWriter_fourcc,视频编解码器

其中视频编解码器

#fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数,注意:字符顺序不能弄混

#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi

#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv

#cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv

 

需要注意的一点是,该函数仅支持写入avi格式的视频文件,且文件大小需小于2G。然后通过videoWriter.write(frame)将每一帧写入视频。

 

 

#视频裁剪

import cv2
import numpy as np


video_name = '../image/VID_20190118_142049.mp4'
cap = cv2.VideoCapture(video_name)
count = 0
# Define the codec and create VideoWriter object.The output is stored in 'outpy.avi' file.

fps = cap.get(cv2.CAP_PROP_FPS)
size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)))
out = cv2.VideoWriter('PartParking_video.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, (512, 128))#注意这边的是512×128  不是128×512,与后面的相反

ret, image = cap.read()  # 从视频中读取一张张的图片,先读取一个,如果放在while循环的开始的话,最后读取结束的时候会报错

while ret:

    new_image = image[0:128, 0:512]

    out.write(new_image)  # 保存一张张图片流,最终形成视频

    ret, image = cap.read()  # 从视频中读取一张张的图片

cv2.destroyAllWindows()
cap.release()


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

你可能感兴趣的:(python人工智障)