本系列文章介绍各类图像识别的使用方法,运用这些技巧采集更多的原始数据,训练我们的AI模型。本系列文章要有Python和OpenCV基础。
姿态识别
MediaPipe的人体姿态识别系统也是很强大的,它能从图片中评估出人体姿态的33个基准点位置,从而判定人体当前的姿态。
姿态识别程序
这个程序将从一张照片中识别出人体,并把每个人体在图片中的范围和33个关键点标注出来。mp.solutions.drawing_utils是MediaPipe内置的,强大的绘制工具。
import cv2
import mediapipe as mp
def img_ope(file):
mypose= mp.solutions.pose
pose = mypose.Pose()
myDraw = mp.solutions.drawing_utils
DrawingSpec_point = myDraw.DrawingSpec((0, 255, 0), 2, 2)
while(True):
img = cv2.imread(file)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
results = pose.process(img_rgb)
if (results.pose_landmarks):
#输出33个点的连接关系
print(mypose.POSE_CONNECTIONS)
for id,lm in enumerate(results.pose_landmarks.landmark):
h,w,c = img.shape
cx,cy = int(lm.x*w),int(lm.y*h)
#输出每个点在图片中的位置
print (id,cx,cy)
myDraw.draw_landmarks(img,results.pose_landmarks,mypose.POSE_CONNECTIONS,DrawingSpec_point)
cv2.imshow("Frame", img)
key = cv2.waitKey(1) & 0xFF
if key== ord('q'):
cv2.waitKey(0)
if key== 27:
break
cv2.destroyAllWindows()
#------------------------------
if __name__=="__main__":
file = "body.png"
img_ope(file)