|
发表于 2023-11-10 22:15:21
|
显示全部楼层
山西省太原市
import cv2
def merge_videos(video1_path, video2_path, output_path):
# 读取视频文件
video1 = cv2.VideoCapture(video1_path)
video2 = cv2.VideoCapture(video2_path)
# 获取视频的宽度、高度和帧率
width = int(video1.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(video1.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(video1.get(cv2.CAP_PROP_FPS))
# 创建输出视频文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))
# 逐帧合并视频
while True:
ret1, frame1 = video1.read()
ret2, frame2 = video2.read()
if not ret1 or not ret2:
break
# 将两帧合并为一帧
merged_frame = cv2.addWeighted(frame1, 0.5, frame2, 0.5, 0)
# 写入输出视频文件
out.write(merged_frame)
# 释放资源
video1.release()
video2.release()
out.release()
def extract_keyframes(video_path, output_folder):
# 读取视频文件
video = cv2.VideoCapture(video_path)
# 获取视频的帧数
total_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
# 设置关键帧间隔
keyframe_interval = 10
# 遍历视频的每一帧
for i in range(0, total_frames, keyframe_interval):
# 设置当前帧位置
video.set(cv2.CAP_PROP_POS_FRAMES, i)
# 读取当前帧
ret, frame = video.read()
if ret:
# 保存关键帧到文件
cv2.imwrite(f"{output_folder}/keyframe_{i}.png", frame)
# 释放资源
video.release()
if __name__ == "__main__":
video1_path = "video1.mp4"
video2_path = "video2.mp4"
output_path = "merged_video.avi"
output_folder = "keyframes"
merge_videos(video1_path, video2_path, output_path)
extract_keyframes(output_path, output_folder)
----------------------
使用Python和OpenCV库实现的简单示例。
首先,确保python已经安装了OpenCV库:
pip install opencv-python |
|