Python 使用 MediaPipe 处理视频,标注人体骨架并输出 MP4 文件
首先需要安装 MediaPipe 库,可以使用以下命令安装:
pip install mediapipe
然后,可以使用以下代码处理视频文件:
import cv2
import mediapipe as mp
# 定义输入和输出视频文件名
input_file = '1.mp4'
output_file = '2.mp4'
# 创建 VideoCapture 对象读取输入视频
cap = cv2.VideoCapture(input_file)
# 创建 VideoWriter 对象用于输出视频
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(output_file, fourcc, fps, (width, height))
# 创建 MediaPipe 的 Pose 对象
mp_pose = mp.solutions.pose
# 循环处理每一帧
while True:
# 读取一帧
ret, frame = cap.read()
if not ret:
break
# 将帧转换为 RGB 格式
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
# 处理帧并获取结果
with mp_pose.Pose() as pose:
results = pose.process(frame)
# 绘制骨架
mp_pose.draw_landmarks(frame, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
# 将输出帧转换为 BGR 格式
frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)
# 写入输出视频
out.write(frame)
# 释放资源
cap.release()
out.release()
上述代码中,首先定义了输入和输出视频文件名。然后创建了 VideoCapture 对象读取输入视频,并创建了 VideoWriter 对象用于输出视频。接着创建了 MediaPipe 的 Pose 对象,用于处理帧并获取结果。在循环处理每一帧时,将帧转换为 RGB 格式,处理帧并获取结果,然后绘制骨架并将输出帧转换为 BGR 格式。最后将输出帧写入输出视频。最后需要释放资源。
原文地址: https://www.cveoy.top/t/topic/j0rp 著作权归作者所有。请勿转载和采集!