以下是基于 OpenPose 分析 MP4 视频中的人体骨架并将结果输出到另一个 MP4 视频的 Python 程序:

import cv2
import time
import argparse

# 导入 openpose 模块
from openpose import pyopenpose as op

# 定义参数
parser = argparse.ArgumentParser()
parser.add_argument("--input_video", default='1.mp4', help='输入视频文件名')
parser.add_argument("--output_video", default='2.mp4', help='输出视频文件名')
args = parser.parse_known_args()[0]

# 初始化 openpose
params = dict()
params['model_folder'] = 'models/'
params['model_pose'] = 'BODY_25'
params['display'] = 0
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()

# 打开输入视频
cap = cv2.VideoCapture(args.input_video)

# 获取输入视频的帧率、宽度和高度
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))

# 创建输出视频
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(args.output_video, fourcc, fps, (width, height))

# 处理每一帧
while True:
    # 读取一帧
    ret, frame = cap.read()
    if not ret:
        break

    # 转换为 RGB 格式
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # 运行 openpose
    datum = op.Datum()
    datum.cvInputData = frame
opWrapper.emplaceAndPop([datum])

    # 绘制骨架
    frame = cv2.cvtColor(datum.cvOutputData, cv2.COLOR_BGR2RGB)

    # 写入输出视频
    out.write(frame)

    # 显示结果
    cv2.imshow('Openpose', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

该程序读取名为 '1.mp4' 的输入视频,并使用 OpenPose 分析每一帧的人体骨架。然后,它将结果绘制到每一帧并将其写入名为 '2.mp4' 的输出视频。程序还显示了每一帧的结果。按 'q' 键退出程序。

使用 OpenPose 分析 MP4 视频中的人体骨架并输出结果到另一个 MP4 视频

原文地址: https://www.cveoy.top/t/topic/j9ZY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录