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()
#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
#视频裁剪
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()函数循环读取视频的每一帧。