最近需要用到openpose进行姿势检测,批量检测文件夹中的人物图像并批量保存检测到的关键点图、骨骼图,并把检测到的关节点坐标信息保存在txt文件中。
from __future__ import division
import cv2
import time
import numpy as np
import matplotlib.pyplot as plt
import os
if not os.path.exists("./bianli/input"): # 创建文件夹
os.makedirs("./bianli/input")
if not os.path.exists("./bianli/output"):
os.makedirs("./bianli/output")
class general_pose_model(object):
def __init__(self, modelpath, mode="MPI"): # 选择指定模型:BODY25、COCO、MPI
# 指定采用的模型
# Body25: 25 points
# COCO: 18 points
# MPI: 15 points
self.inWidth = 368
self.inHeight = 368
self.threshold = 0.1
if mode == "BODY25":
self.pose_net = self.general_body25_model(modelpath)
elif mode == "COCO":
self.pose_net = self.general_coco_model(modelpath)
elif mode == "MPI":
self.pose_net = self.get_mpi_model(modelpath)
def get_mpi_model(self, modelpath):
self.points_name = { # 点号表示关节的名称
"Head": 0, "Neck": 1,
"RShoulder": 2, "RElbow": 3, "RWrist": 4,
"LShoulder": 5, "LElbow": 6, "LWrist":
7, "RHip": 8, "RKnee": 9, "RAnkle": 10,
"LHip": 11, "LKnee": 12, "LAnkle": 13,
"Chest": 14, "Background": 15 }
self.num_points = 15 # 识别关键点的个数
self.point_pairs = [[0, 1], [1, 2], [2, 3], # 关键点连接顺序
[3, 4], [1, 5], [5, 6],
[6, 7], [1, 14],[14, 8],
[8, 9], [9, 10], [14, 11],
[11, 12], [12, 13]
]
prototxt = os.path.join( # 加载训练好的模型
modelpath,
"D:/openpose/openpose-master/models/pose/mpi/pose_deploy_linevec.prototxt")
caffemodel = os.path.join(
modelp