最近使用mediapipe,发现报错提示没有对应的模型,而且因为网络问题无法下载。在此留下一个模型的下载地址,以防大家找不到。

地址:mediapipe-0.8.10.2.zip官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 (123pan.com)

# coding=gbk

import cv2 as cv
import mediapipe as mp


# 导入solution
mp_pose = mp.solutions.pose
# 导入绘图函数
mp_drawing = mp.solutions.drawing_utils

# 导入模型
pose = mp_pose.Pose(static_image_mode=True,  # 是静态图片还是连续视频帧
                    model_complexity=1,  # 选择人体姿态关键点检测模型,0性能差但快,2性能好但慢,1介于两者之间
                    smooth_landmarks=True,  # 是否平滑关键点
                    enable_segmentation=True,  # 是否人体抠图
                    min_detection_confidence=0.5,  # 置信度阈值
                    min_tracking_confidence=0.5  # 追踪阈值
                    )


# 处理单帧的函数
def process_frame(img):
    img_rgb = cv.cvtColor(img, cv.COLOR_BGR2RGB)
    results = pose.process(img_rgb)

    mp_drawing.draw_landmarks(img, results.pose_landmarks, mp_pose.POSE_CONNECTIONS)
    return img


# 读取视频帧的函数
def process_cap(cap, gap):
    while cap.isOpened():
        # 读视频帧
        ret, frame = cap.read()
        if ret:  # 判断是否读取成功
            # 如果读取成功则处理该帧
            frame = process_frame(frame)
            # 展示处理后的三通道图像
            cv.imshow('video', frame)
            # 按键盘的esc或者q退出
            if cv.waitKey(gap) in [ord('q'), 27]:
                break
        else:
            # print('error!')
            break

    # 关闭摄像头
    cap.release()
    # 关闭图像窗口
    cv.destroyAllWindows()


# 从摄像头实时检测
def detect_camera():
    # 创建窗口
    cv.namedWindow('video', cv.WINDOW_NORMAL)
    # 调用摄像头获取画面  0是windows系统下默认的摄像头,1是Mac系统
    cap = cv.VideoCapture(0)

    process_cap(cap, 1)


# 从本地导入视频检测
def detect_video(path):
    # 创建窗口
    cv.namedWindow('video', cv.WINDOW_NORMAL)

    # 从本地读取视频
    cap = cv.VideoCapture(path)
    # 获取原视频帧率
    fps = cap.get(cv.CAP_PROP_FPS)
    # 获取原视频窗口大小
    width = int(cap.get(cv.CAP_PROP_FRAME_WIDTH))
    height = int(cap.get(cv.CAP_PROP_FRAME_HEIGHT))
    # print(fps)
    # 视频两帧之间的播放间隔,单位为毫秒
    gap = int(1000 / fps)
    cv.resizeWindow('video',width,height)
    process_cap(cap, gap)


if __name__ == '__main__':
    detect_camera()

    # img = cv2.imread('22.jpg')
    # frame = process_frame(img)
    # cv2.imshow("1", frame)
    # cv2.waitKey(0)

参考链接:mediapipe实现实时动作检测【python版本】_mediapipe python_再游于北方知寒的博客-CSDN博客

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐