1.1. 例子
读取mp4格式的视频,将每一帧改为灰度图,并且打上水印(“WaterMark”),并将其输出保存为out.mp4,在这个例子中可以看到视频读取,每帧数据处理,视频保存的整体流程简单示例
import cv2
try:
cap=cv2.VideoCapture("CatCloth.mp4")
if not cap.isOpened():
print("Video can't be opened")
raise IOError
# 获取视频的宽度、高度和帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = cap.get(cv2.CAP_PROP_FPS)
delay=int(1000/(fps)) #计算每帧视频播放延时
# 创建 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
output_path="OutPut.mp4"
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
while True:
ret,frame=cap.read() #读取一帧数据
if not ret:
break
#对每一帧图像进行处理
# 转换为灰度图像
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 打上水印
cv2.putText(gray_frame, "WaterMark", (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
# 写入输出文件
out.write(gray_frame)
# 显示处理后的帧
cv2.imshow("Processed Video", gray_frame)
#此处延迟FPS计算出来的时间,按照视频原有速度播放视频 按q键退出
if(cv2.waitKey(delay)&0xff==ord('q')):
br