<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          實(shí)操教程|使用Python+OpenCV實(shí)現(xiàn)姿態(tài)估計(jì)

          共 7632字,需瀏覽 16分鐘

           ·

          2021-05-25 10:48

          ↑ 點(diǎn)擊藍(lán)字 關(guān)注極市平臺(tái)

          作者丨磐懟懟
          來源丨深度學(xué)習(xí)與計(jì)算機(jī)視覺
          編輯丨極市平臺(tái)

          極市導(dǎo)讀

           

          本文詳細(xì)介紹了如何使用Mediapipe和OpenCV實(shí)現(xiàn)姿態(tài)估計(jì),附有相關(guān)代碼及視頻。 >>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿

          什么是OpenCV?

          計(jì)算機(jī)視覺是一個(gè)能夠理解圖像和視頻如何存儲(chǔ)和操作的過程,它還有助于從圖像或視頻中檢索數(shù)據(jù)。計(jì)算機(jī)視覺是人工智能的一部分。

          計(jì)算機(jī)視覺在自動(dòng)駕駛汽車,物體檢測(cè),機(jī)器人技術(shù),物體跟蹤等方面發(fā)揮著重要作用。

          OpenCV

          OpenCV是一個(gè)開放源代碼庫,主要用于計(jì)算機(jī)視覺,圖像處理和機(jī)器學(xué)習(xí)。通過OpenCV,它可以為實(shí)時(shí)數(shù)據(jù)提供更好的輸出,我們可以處理圖像和視頻,以便實(shí)現(xiàn)的算法能夠識(shí)別諸如汽車,交通信號(hào)燈,車牌等物體以及人臉,或者甚至是人類的筆跡。借助其他數(shù)據(jù)分析庫,OpenCV能夠根據(jù)自己的需求處理圖像和視頻。

          可以在這里獲取有關(guān)OpenCV的更多信息 https://opencv.org/

          我們將與OpenCV-python一起使用的庫是Mediapipe

          什么是Mediapipe?

          Mediapipe是主要用于構(gòu)建多模式音頻,視頻或任何時(shí)間序列數(shù)據(jù)的框架。借助MediaPipe框架,可以構(gòu)建令人印象深刻的ML管道,例如TensorFlow,TFLite等推理模型以及媒體處理功能。

          使用Mediapipe的最先進(jìn)的ML模型

          • 人臉檢測(cè)
          • 多手跟蹤
          • 頭發(fā)分割
          • 目標(biāo)檢測(cè)與追蹤
          • Objectron:3D對(duì)象檢測(cè)和跟蹤
          • AutoFlip:自動(dòng)視頻裁剪管道
          • 姿態(tài)估計(jì)

          姿態(tài)估計(jì)

          通過視頻或?qū)崟r(shí)饋送進(jìn)行人體姿態(tài)估計(jì)在諸如全身手勢(shì)控制,量化體育鍛煉和手語識(shí)別等各個(gè)領(lǐng)域中發(fā)揮著至關(guān)重要的作用。

          例如,它可用作健身,瑜伽和舞蹈應(yīng)用程序的基本模型。它在增強(qiáng)現(xiàn)實(shí)中找到了自己的主要作用。

          Media Pipe Pose是用于高保真人體姿勢(shì)跟蹤的框架,該框架從RGB視頻幀獲取輸入并推斷出整個(gè)人類的33個(gè)3D界標(biāo)。當(dāng)前最先進(jìn)的方法主要依靠強(qiáng)大的桌面環(huán)境進(jìn)行推理,而此方法優(yōu)于其他方法,并且可以實(shí)時(shí)獲得很好的結(jié)果。

          姿勢(shì)地標(biāo)模型

          來源:https://google.github.io/mediapipe/solutions/pose.html

          現(xiàn)在開始

          首先,安裝所有必需的庫。

          – pip install OpenCV-python– pip install mediapipe

          下載任何類型的視頻,例如跳舞,跑步等。

          我們將利用這些視頻進(jìn)行姿勢(shì)估計(jì)。我正在使用下面的鏈接中提供的視頻。

          https://drive.google.com/file/d/1kFWHaAaeRU4biZ_1wKZlL4KCd0HSoNYd/view?usp=sharing

          為了檢查mediapipe是否正常工作,我們將使用上面下載的視頻實(shí)現(xiàn)一個(gè)小的代碼。

          import cv2import mediapipe as mpimport timempPose = mp.solutions.posepose = mpPose.Pose()mpDraw = mp.solutions.drawing_utils#cap = cv2.VideoCapture(0)cap = cv2.VideoCapture('a.mp4')pTime = 0while True:success, img = cap.read()imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)results = pose.process(imgRGB)print(results.pose_landmarks)if results.pose_landmarks:mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)for id, lm in enumerate(results.pose_landmarks.landmark):h, w,c = img.shapeprint(id, lm)cx, cy = int(lm.x*w), int(lm.y*h)cv2.circle(img, (cx, cy), 5, (255,0,0), cv2.FILLED)cTime = time.time()fps = 1/(cTime-pTime)pTime = cTimecv2.putText(img, str(int(fps)), (50,50), cv2.FONT_HERSHEY_SIMPLEX,1,(255,0,0), 3)cv2.imshow("Image", img)cv2.waitKey(1)

          在上面的內(nèi)容中,你可以很容易地使用OpenCV從名為“ a.mp4”的視頻中讀取幀,并將幀從BGR轉(zhuǎn)換為RGB圖像,并使用mediapipe在整個(gè)處理后的幀上繪制界標(biāo)。最后,我們將獲得具有地標(biāo)的視頻輸出,如下所示。

          變量“ cTime”,“ pTime”和“ fps”用于計(jì)算每秒的讀取幀。你可以在下面的輸出中看到左角的幀數(shù)。

          終端部分中的輸出是mediapipe檢測(cè)到的界標(biāo)。

          姿勢(shì)界標(biāo)

          你可以在上圖的終端部分中看到姿勢(shì)界標(biāo)的列表。每個(gè)地標(biāo)包括以下內(nèi)容:

          • x和y:這些界標(biāo)坐標(biāo)分別通過圖像的寬度和高度歸一化為[0.0,1.0]。
          • z:通過將臀部中點(diǎn)處的深度作為原點(diǎn)來表示界標(biāo)深度,并且z值越小,界標(biāo)與攝影機(jī)越近。z的大小幾乎與x的大小相同。
          • 可見性:[0.0,1.0]中的值,指示界標(biāo)在圖像中可見的可能性。

          MediaPipe運(yùn)行得很好。

          讓我們創(chuàng)建一個(gè)用于估計(jì)姿勢(shì)的模塊,并且將該模塊用于與姿態(tài)估計(jì)有關(guān)的任何其他項(xiàng)目。另外,你可以在網(wǎng)絡(luò)攝像頭的幫助下實(shí)時(shí)使用它。

          創(chuàng)建一個(gè)名為“ PoseModule”的python文件

          import cv2import mediapipe as mpimport timeclass PoseDetector:def __init__(self, mode = False, upBody = False, smooth=True, detectionCon = 0.5, trackCon = 0.5):self.mode = modeself.upBody = upBodyself.smooth = smoothself.detectionCon = detectionConself.trackCon = trackConself.mpDraw = mp.solutions.drawing_utilsself.mpPose = mp.solutions.poseself.pose = self.mpPose.Pose(self.mode, self.upBody, self.smooth, self.detectionCon, self.trackCon)def findPose(self, img, draw=True):imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)self.results = self.pose.process(imgRGB)#print(results.pose_landmarks)if self.results.pose_landmarks:if draw:self.mpDraw.draw_landmarks(img, self.results.pose_landmarks, self.mpPose.POSE_CONNECTIONS)return imgdef getPosition(self, img, draw=True):lmList= []if self.results.pose_landmarks:for id, lm in enumerate(self.results.pose_landmarks.landmark):h, w, c = img.shape#print(id, lm)cx, cy = int(lm.x * w), int(lm.y * h)lmList.append([id, cx, cy])if draw:cv2.circle(img, (cx, cy), 5, (255, 0, 0), cv2.FILLED)return lmListdef main():cap = cv2.VideoCapture('videos/a.mp4') #make VideoCapture(0) for webcampTime = 0detector = PoseDetector()while True:success, img = cap.read()img = detector.findPose(img)lmList = detector.getPosition(img)print(lmList)cTime = time.time()fps = 1 / (cTime - pTime)pTime = cTimecv2.putText(img, str(int(fps)), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 3)cv2.imshow("Image", img)cv2.waitKey(1)if __name__ == "__main__":main()

          這是姿態(tài)估計(jì)所需的代碼,在上面,有一個(gè)名為“ PoseDetector”的類,在其中我們創(chuàng)建了兩個(gè)對(duì)象“ findPose”和“ getPosition”。

          在這里,名為“ findPose”的對(duì)象將獲取輸入幀,并借助名為mpDraw的mediapipe函數(shù),它將繪制身體上的界標(biāo),而對(duì)象“ getPosition””將獲得檢測(cè)區(qū)域的坐標(biāo),我們還可以借助此對(duì)象高亮顯示任何坐標(biāo)點(diǎn)。

          在main函數(shù)中,我們將進(jìn)行測(cè)試運(yùn)行,你可以通過將main函數(shù)中的第一行更改為“ cap = cv2.VideoCapture(0)”來從網(wǎng)絡(luò)攝像頭中獲取實(shí)時(shí)數(shù)據(jù)。

          由于我們?cè)谏厦娴奈募袆?chuàng)建了一個(gè)類,因此我們將在另一個(gè)文件中使用它。

          現(xiàn)在是最后階段

          import cv2import timeimport PoseModule as pmcap = cv2.VideoCapture(0)pTime = 0detector = pm.PoseDetector()while True:success, img = cap.read()img = detector.findPose(img)lmList = detector.getPosition(img)print(lmList)cTime = time.time()fps = 1 / (cTime - pTime)pTime = cTimecv2.putText(img, str(int(fps)), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 3)cv2.imshow("Image", img)cv2.waitKey(1)

          在這里,代碼將僅調(diào)用上面創(chuàng)建的模塊,并在輸入視頻或網(wǎng)絡(luò)攝像頭的實(shí)時(shí)數(shù)據(jù)上運(yùn)行整個(gè)算法。這是測(cè)試視頻的輸出。

          完整的代碼可在下面的GitHub鏈接中找到。

          https://github.com/BakingBrains/Pose_estimation

          鏈接到Y(jié)ouTube視頻:https://www.youtube.com/watch?v=brwgBf6VB0I

          如果覺得有用,就請(qǐng)分享到朋友圈吧!

          △點(diǎn)擊卡片關(guān)注極市平臺(tái),獲取最新CV干貨

          公眾號(hào)后臺(tái)回復(fù)“CNN綜述”獲取67頁綜述深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)


          極市干貨
          YOLO教程:一文讀懂YOLO V5 與 YOLO V4大盤點(diǎn)|YOLO 系目標(biāo)檢測(cè)算法總覽全面解析YOLO V4網(wǎng)絡(luò)結(jié)構(gòu)
          實(shí)操教程:PyTorch vs LibTorch:網(wǎng)絡(luò)推理速度誰更快?只用兩行代碼,我讓Transformer推理加速了50倍PyTorch AutoGrad C++層實(shí)現(xiàn)
          算法技巧(trick):深度學(xué)習(xí)訓(xùn)練tricks總結(jié)(有實(shí)驗(yàn)支撐)深度強(qiáng)化學(xué)習(xí)調(diào)參Tricks合集長尾識(shí)別中的Tricks匯總(AAAI2021
          最新CV競(jìng)賽:2021 高通人工智能應(yīng)用創(chuàng)新大賽CVPR 2021 | Short-video Face Parsing Challenge3D人體目標(biāo)檢測(cè)與行為分析競(jìng)賽開賽,獎(jiǎng)池7萬+,數(shù)據(jù)集達(dá)16671張!


          CV技術(shù)社群邀請(qǐng)函 #

          △長按添加極市小助手
          添加極市小助手微信(ID : cvmart2)

          備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測(cè)-深圳)


          即可申請(qǐng)加入極市目標(biāo)檢測(cè)/圖像分割/工業(yè)檢測(cè)/人臉/醫(yī)學(xué)影像/3D/SLAM/自動(dòng)駕駛/超分辨率/姿態(tài)估計(jì)/ReID/GAN/圖像增強(qiáng)/OCR/視頻理解等技術(shù)交流群


          每月大咖直播分享、真實(shí)項(xiàng)目需求對(duì)接、求職內(nèi)推、算法競(jìng)賽、干貨資訊匯總、與 10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動(dòng)交流~



          覺得有用麻煩給個(gè)在看啦~  
          瀏覽 83
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  影音先锋一区二区成人三级视频 | 欧美肏逼网 | 国产精品又污又黄又爽污污 | 豆花自拍成人精品视频 | 豆花视频黄片 |