wordpress文章id修改鄭州seo顧問外包
MediaPipe人體姿態(tài)、手指關(guān)鍵點(diǎn)檢測
文章目錄
- MediaPipe人體姿態(tài)、手指關(guān)鍵點(diǎn)檢測
- 前言
- 一、手指關(guān)鍵點(diǎn)檢測
- 二、姿態(tài)檢測
- 三、3D物體案例檢測案例
前言
??Mediapipe是google的一個(gè)開源項(xiàng)目,用于構(gòu)建機(jī)器學(xué)習(xí)管道。
??提供了16個(gè)預(yù)訓(xùn)練模型的案例:人臉檢測、Face Mesh、虹膜、手、姿態(tài)、人體、人物分割、頭發(fā)分割、目標(biāo)檢測、Box Tracking、Instant Motion Tracking、3D目標(biāo)檢測、特征匹配、AutoFlip、MediaSequence、YouTube-8M。
??肢體識別本質(zhì)上還是分類任務(wù),該技術(shù)有很多應(yīng)用場景,比如手勢識別控制類應(yīng)用、動(dòng)作檢測類應(yīng)用、動(dòng)作評測類應(yīng)用、以及一些移動(dòng)設(shè)備AR視頻合成類應(yīng)用。
一、手指關(guān)鍵點(diǎn)檢測
檢測一只手中21個(gè)關(guān)鍵點(diǎn)坐標(biāo),每個(gè)點(diǎn)對應(yīng)一個(gè)名稱
import cv2
import mediapipe as mp
# 用來在圖片中畫出關(guān)鍵點(diǎn)
mp_drawing = mp.solutions.drawing_utils
# 關(guān)鍵點(diǎn)圖樣式
mp_drawing_styles = mp.solutions.drawing_styles
mp_hands = mp.solutions.hands
#MAX_NUM_HANDS 要檢測的最大手?jǐn)?shù) 默認(rèn)為2
hands = mp_hands.Hands(max_num_hands=1)if __name__ == '__main__':file = '1.png'# 圖片翻轉(zhuǎn)image = cv2.flip(cv2.imread(file), 1)results = hands.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))image_height, image_width, _ = image.shapeannotated_image = image.copy()# 遍歷檢測出來的手掌for hand_landmarks in results.multi_hand_landmarks:for lm in hand_landmarks.landmark:# 獲取每個(gè)點(diǎn)的坐標(biāo)x = lm.x * image_widthy = lm.y * image_height# 畫關(guān)鍵點(diǎn)mp_drawing.draw_landmarks(annotated_image,hand_landmarks,mp_hands.HAND_CONNECTIONS,mp_drawing_styles.get_default_hand_landmarks_style(),mp_drawing_styles.get_default_hand_connections_style())cv2.imwrite('0.png', cv2.flip(annotated_image, 1))
二、姿態(tài)檢測
import cv2
import mediapipe as mp
# 用來在圖片中畫出關(guān)鍵點(diǎn)
mp_drawing = mp.solutions.drawing_utils
# 關(guān)鍵點(diǎn)圖樣式
mp_drawing_styles = mp.solutions.drawing_styles
mpPose = mp.solutions.pose
pose = mpPose.Pose()if __name__ == '__main__':file = '1.png'image = cv2.imread(file)image_height, image_width, _ = image.shapeimgRGB = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)results = pose.process(imgRGB)# mediapipe姿態(tài)檢測只能檢測一個(gè)人if results.pose_landmarks:for lm in results.pose_landmarks.landmark:h, w, c = image.shapecx, cy = int(lm.x * w), int(lm.y * h)# 畫關(guān)鍵點(diǎn)annotated_image = image.copy()mp_drawing.draw_landmarks(annotated_image,results.pose_landmarks,mpPose.POSE_CONNECTIONS,landmark_drawing_spec=mp_drawing_styles.get_default_pose_landmarks_style())cv2.imwrite('0.png', annotated_image)
三、3D物體案例檢測案例
其他案例具體可以查看官網(wǎng)詳細(xì)介紹:
https://google.github.io/mediapipe/solutions/pose.html