最近使用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博客