房產中介如何做網站seo推廣服務哪家好
pip下載 MediaPipe
pip install mediapipe -i?
手部特征點模型包包含一個手掌檢測模型和一個手部特征點檢測模型。手掌檢測模型在輸入圖片中定位手部,手部特征點檢測模型可識別手掌檢測模型定義的被剪裁手掌圖片上的特定手部特征點。
由于運行手掌檢測模型非常耗時,因此在視頻或直播跑步模式下,手部特征點會在一幀中使用手部特征點模型定義的邊界框,以便為后續(xù)幀定位手部區(qū)域。僅當手部特征點模型不再識別出手部的存在或未能跟蹤畫面中的手部時,手部特征點才會重新觸發(fā)手掌檢測模型。這樣可以減少手動標志器觸發(fā)手掌檢測模型的次數。
姿態(tài)檢測
import cv2
import mediapipe as mp
# 獲取pose模塊
mp_pose = mp.solutions.pose
# 繪圖工具模塊
mp_draw = mp.solutions.drawing_utils
a=mp_draw.DrawingSpec((255,0,0),-1,2)#繪制節(jié)點圓圈的大小顏色
b=mp_draw.DrawingSpec((0,0,255),4)#繪制線條的粗細和顏色
# 獲取Pose對象
pose = mp_pose.Pose(static_image_mode=True)cv2.namedWindow("img", cv2.WINDOW_NORMAL)
cv2.resizeWindow("img", (800, 600))
img = cv2.imread("img.png")img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 使用Pose對象處理圖像,得到姿態(tài)的關鍵點
results = pose.process(img_rgb)
pose_landmarks = results.pose_landmarks
if pose_landmarks:mp_draw.draw_landmarks(img, pose_landmarks, mp_pose.POSE_CONNECTIONS,a,b)
cv2.imshow("img", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
?效果圖:
mp_draw.DrawingSpec()
用于定義繪圖的樣式,包括顏色、線條粗細、圓形半徑等。以下是 mp_draw.DrawingSpec
的一些常用參數:
-
color
:指定繪圖的顏色,可以是一個整數表示的 BGR 顏色值,也可以是一個包含三個元素的列表或元組表示的 RGB 顏色值。 -
thickness
:指定繪圖的線條粗細,默認為 1。 -
circle_radius
:指定繪圖中圓形的半徑,默認為 1。
mp_pose.Pose
()的參數用于配置人體姿態(tài)估計的行為,以下是一些常用參數:
-
static_image_mode
:表示輸入的是靜態(tài)圖像還是連續(xù)幀視頻。如果設置為True
,則表示輸入為靜態(tài)圖像;如果設置為False
,則表示輸入為連續(xù)幀視頻。 -
model_complexity
:表示人體姿態(tài)估計模型的復雜度??梢赃x擇0、1或2,其中0表示速度最快但精度最低,1表示速度和精度平衡,2表示速度最慢但精度最高。 -
smooth_landmarks
:表示是否平滑關鍵點。如果設置為True
,則會對關鍵點進行平滑處理,使姿態(tài)估計更加流暢。 -
enable_segmentation
:表示是否對人體進行摳圖。如果設置為True
,則會在輸出中包含人體的分割掩碼。 -
min_detection_confidence
:表示檢測置信度的閾值。只有當檢測到的人體姿態(tài)的置信度高于該閾值時,才會被認為是有效的姿態(tài)估計。 -
min_tracking_confidence
:表示跟蹤置信度的閾值。在連續(xù)幀視頻中,只有當跟蹤到的人體姿態(tài)的置信度高于該閾值時,才會繼續(xù)使用該姿態(tài)估計。
mp_draw.draw_landmarks()
函數用于在圖像上繪制手部關鍵點和連接,其參數如下:
-
image
:要繪制關鍵點和連接的圖像。 -
landmark_list
:檢測到的手部關鍵點坐標。 -
connections
:要繪制的連接線,需要指定哪些關鍵點之間進行連接。 -
landmark_drawing_spec
:關鍵點的繪制樣式,包括顏色、粗細等。 -
connection_drawing_spec
:連接線的繪制樣式,包括顏色、粗細等。
姿態(tài)檢測(3D)
import cv2
import mediapipe as mp
# 獲取pose模塊
mp_pose = mp.solutions.pose
# 繪圖工具模塊
mp_draw = mp.solutions.drawing_utils
# 獲取Pose對象
pose = mp_pose.Pose(static_image_mode=True)img = cv2.imread("yj.jpg")img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
# 使用Pose對象處理圖像,得到姿態(tài)的關鍵點
results = pose.process(img_rgb)
pose_landmarks = results.pose_world_landmarks
#pose_landmarks是一個包含多個關鍵點的數組或數據結構,每個關鍵點可能包含坐標信息(如 x、y、z 坐標)以及其他相關屬性。這些關鍵點可以表示人體的關節(jié)、部位或其他特征點。
if pose_landmarks:mp_draw.plot_landmarks(pose_landmarks, mp_pose.POSE_CONNECTIONS)cv2.destroyAllWindows()
效果圖:
mp_draw.plot_landmarks()
函數用于在圖像或視頻幀上繪制姿態(tài)估計的關鍵點和連接。以下是該函數的參數說明:
-
landmarks
:要繪制的關鍵點列表。 -
connections
:要繪制的連接列表,指定哪些關鍵點之間進行連接。 -
landmark_drawing_spec
:關鍵點的繪制樣式,包括顏色、大小等。 -
connection_drawing_spec
:連接線的繪制樣式,包括顏色、粗細等。
?人體摳圖換背景
import cv2
import mediapipe as mp
import numpy as np# 獲取pose模塊
mp_pose=mp.solutions.pose
# 繪圖工具模塊
mp_draw=mp.solutions.drawing_utils
# 獲取Pose對象
pose=mp_pose.Pose(static_image_mode=True, enable_segmentation=True)# 獲取背景,原圖
bg=cv2.imread('bg.png')
im=cv2.imread('img.png')
cv2.imshow('bg',bg)
cv2.imshow('im',im)
# 將背景的size設置和原圖size一致
w,h,c=im.shape
bg=cv2.resize(bg,(h,w))# 使用Pose對象處理圖像,得到姿態(tài)的關鍵點
im_rgb=cv2.cvtColor(im,cv2.COLOR_BGR2RGB)
result=pose.process(im_rgb)
# cv2.imshow('result',result)# segmentation_mask中的數據值是0.0-1.0,值越大,表示越接近是人
mask=result.segmentation_mask
cv2.imshow('mask',mask)#
# 將單通道的mask變成三通道
mask=np.stack((mask,mask,mask),-1)
# 大于0.5的才是人
mask=mask>0.5
img1=np.where(mask,im,bg)
cv2.imshow('im1',img1)cv2.waitKey(0)
cv2.destroyAllWindows()
效果嘎嘎棒?
pose.process(img_rgb)返回值的屬性
-
pose_landmarks
:這是一個包含人體姿態(tài)關鍵點的數組,每個關鍵點都有一個對應的坐標。這些關鍵點可以用于表示人體的關節(jié)位置,例如頭部、肩膀、手臂、腿部等。通過分析這些關鍵點的位置和運動,可以實現人體姿態(tài)的識別、動作捕捉等功能。 -
pose_world_landmarks
:與pose_landmarks
類似,pose_world_landmarks
也是一個關鍵點數組。不同的是,pose_world_landmarks
中的關鍵點坐標是在真實世界坐標系中的位置,而不是圖像坐標系中的位置。這意味著pose_world_landmarks
可以提供更準確的人體姿態(tài)信息,適用于需要與真實世界進行交互的應用場景。 -
segmentation_mask
:segmentation_mask
是姿態(tài)跟蹤結果中的一個數組,它的大小與跟蹤的圖像相同。每個像素的值在0.0到1.0之間,其中較暗的值表示背景,較亮的值表示被跟蹤的身體。通過分析segmentation_mask
,可以將人體從背景中分離出來,實現人體的分割和提取。