【姿態估計實戰】使用OpenCV和Mediapipe構建鍛煉跟蹤器【附完整源碼與詳細說明】

《------往期經典推薦------》

一、AI應用軟件開發實戰專欄【鏈接】

項目名稱項目名稱
1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】
3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】
5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】
7.【YOLOv8多目標識別與自動標注軟件開發】8.【基于YOLOv8深度學習的行人跌倒檢測系統】
9.【基于YOLOv8深度學習的PCB板缺陷檢測系統】10.【基于YOLOv8深度學習的生活垃圾分類目標檢測系統】
11.【基于YOLOv8深度學習的安全帽目標檢測系統】12.【基于YOLOv8深度學習的120種犬類檢測與識別系統】
13.【基于YOLOv8深度學習的路面坑洞檢測系統】14.【基于YOLOv8深度學習的火焰煙霧檢測系統】
15.【基于YOLOv8深度學習的鋼材表面缺陷檢測系統】16.【基于YOLOv8深度學習的艦船目標分類檢測系統】
17.【基于YOLOv8深度學習的西紅柿成熟度檢測系統】18.【基于YOLOv8深度學習的血細胞檢測與計數系統】
19.【基于YOLOv8深度學習的吸煙/抽煙行為檢測系統】20.【基于YOLOv8深度學習的水稻害蟲檢測與識別系統】
21.【基于YOLOv8深度學習的高精度車輛行人檢測與計數系統】22.【基于YOLOv8深度學習的路面標志線檢測與識別系統】
23.【基于YOLOv8深度學習的智能小麥害蟲檢測識別系統】24.【基于YOLOv8深度學習的智能玉米害蟲檢測識別系統】
25.【基于YOLOv8深度學習的200種鳥類智能檢測與識別系統】26.【基于YOLOv8深度學習的45種交通標志智能檢測與識別系統】
27.【基于YOLOv8深度學習的人臉面部表情識別系統】28.【基于YOLOv8深度學習的蘋果葉片病害智能診斷系統】
29.【基于YOLOv8深度學習的智能肺炎診斷系統】30.【基于YOLOv8深度學習的葡萄簇目標檢測系統】
31.【基于YOLOv8深度學習的100種中草藥智能識別系統】32.【基于YOLOv8深度學習的102種花卉智能識別系統】
33.【基于YOLOv8深度學習的100種蝴蝶智能識別系統】34.【基于YOLOv8深度學習的水稻葉片病害智能診斷系統】
35.【基于YOLOv8與ByteTrack的車輛行人多目標檢測與追蹤系統】36.【基于YOLOv8深度學習的智能草莓病害檢測與分割系統】
37.【基于YOLOv8深度學習的復雜場景下船舶目標檢測系統】38.【基于YOLOv8深度學習的農作物幼苗與雜草檢測系統】
39.【基于YOLOv8深度學習的智能道路裂縫檢測與分析系統】40.【基于YOLOv8深度學習的葡萄病害智能診斷與防治系統】
41.【基于YOLOv8深度學習的遙感地理空間物體檢測系統】42.【基于YOLOv8深度學習的無人機視角地面物體檢測系統】
43.【基于YOLOv8深度學習的木薯病害智能診斷與防治系統】44.【基于YOLOv8深度學習的野外火焰煙霧檢測系統】
45.【基于YOLOv8深度學習的腦腫瘤智能檢測系統】46.【基于YOLOv8深度學習的玉米葉片病害智能診斷與防治系統】
47.【基于YOLOv8深度學習的橙子病害智能診斷與防治系統】48.【基于深度學習的車輛檢測追蹤與流量計數系統】
49.【基于深度學習的行人檢測追蹤與雙向流量計數系統】50.【基于深度學習的反光衣檢測與預警系統】
51.【基于深度學習的危險區域人員闖入檢測與報警系統】52.【基于深度學習的高密度人臉智能檢測與統計系統】
53.【基于深度學習的CT掃描圖像腎結石智能檢測系統】54.【基于深度學習的水果智能檢測系統】
55.【基于深度學習的水果質量好壞智能檢測系統】56.【基于深度學習的蔬菜目標檢測與識別系統】
57.【基于深度學習的非機動車駕駛員頭盔檢測系統】58.【太基于深度學習的陽能電池板檢測與分析系統】
59.【基于深度學習的工業螺栓螺母檢測】60.【基于深度學習的金屬焊縫缺陷檢測系統】
61.【基于深度學習的鏈條缺陷檢測與識別系統】62.【基于深度學習的交通信號燈檢測識別】
63.【基于深度學習的草莓成熟度檢測與識別系統】64.【基于深度學習的水下海生物檢測識別系統】
65.【基于深度學習的道路交通事故檢測識別系統】66.【基于深度學習的安檢X光危險品檢測與識別系統】
67.【基于深度學習的農作物類別檢測與識別系統】68.【基于深度學習的危險駕駛行為檢測識別系統】
69.【基于深度學習的維修工具檢測識別系統】70.【基于深度學習的維修工具檢測識別系統】
71.【基于深度學習的建筑墻面損傷檢測系統】72.【基于深度學習的煤礦傳送帶異物檢測系統】
73.【基于深度學習的老鼠智能檢測系統】

二、機器學習實戰專欄【鏈接】,已更新31期,歡迎關注,持續更新中~~
三、深度學習【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進專欄【鏈接】持續更新中~~
六、YOLO性能對比專欄【鏈接】,持續更新中~

《------正文------》

目錄

  • 引言
  • 什么是OpenCV?
  • 什么是姿態估計?
  • 什么是Mediapipe?
  • 步驟1:設置OpenCV和Mediapipe
  • 步驟2:使用OpenCV捕獲視頻
  • 步驟3:使用Mediapipe檢測身體關節
  • 第四步:姿勢估計
  • 步驟5:提取關節坐標
  • 步驟6:計算關節角度
  • 第五步:建立二頭肌卷曲計數器
  • 第6步:構建二頭肌卷曲跟蹤器
  • 總結

引言

img
本文主要介紹一個使用OpenCV和Mediapipe的運動跟蹤器的實戰項目,主要實現手部二頭肌卷取動作的檢測與計數,并詳細介紹了其實現原理與實現代碼,供小伙伴們學習參考。當然,通過該項目原理可以實現很多其他鍛煉項目的檢測與計數,感興趣的小伙伴自行探索。

什么是OpenCV?

OpenCV(Open Source Computer Vision Library)是計算機視覺領域使用最廣泛的工具之一。它是一個開源庫,包含2,500多種算法,使我們能夠執行目標檢測、面部識別和圖像處理等任務。

在我們的運動跟蹤項目中,OpenCV扮演了關鍵角色。它使我們能夠:

1.從計算機的網絡攝像頭捕獲視頻。

2.處理視頻的每一幀以檢測特定身體部位的運動,如肘部和手腕。

3.以視頻和文本疊加的形式向用戶顯示實時反饋。

我們為這個項目選擇OpenCV的主要原因之一是它易于使用Python,即使是初學者也可以使用。OpenCV支持多種平臺,包括Windows、macOS和Linux,這使得學生可以輕松地在自己的計算機上運行該項目。

什么是姿態估計?

在我們深入研究我們項目的技術細節之前,理解姿態估計的概念是很重要的。姿態估計是計算機視覺中的一種技術,它允許我們通過檢測關鍵點或“地標”(如肘部,肩部,手腕和臀部)來跟蹤和分析人體的運動。

img

通過連接這些關鍵點,我們可以繪制人體地圖,并測量不同身體部位的運動和角度。

簡而言之,姿勢估計可以幫助計算機識別您的身體所處的位置。無論您是站著、坐著還是執行特定運動(例如舉起啞鈴),姿勢估計都可以識別每個關節的位置以及它的真實的移動方式。

使用姿勢估計跟蹤運動的能力使其成為構建需要用戶交互的應用程序的理想工具。這包括健身追蹤器、互動游戲、虛擬現實和基于手勢的界面等應用程序。

什么是Mediapipe?

Mediapipe由Google開發,是一個機器學習框架,可以簡化構建用于人體姿勢估計,手部跟蹤,面部檢測等的實時系統。它提供了預先構建的模型,可以以驚人的精度和速度檢測人體,手部或面部的關鍵點。

img

Mediapipe的設計高度靈活和高效,使其成為移動的設備和實時應用的理想選擇。它使用復雜的機器學習算法來跟蹤人體上的地標,使其成為我們運動跟蹤器項目的完美工具。

img

img

這就是為什么Mediapipe是我們項目的最佳選擇:

實時性能: Mediapipe可以足夠快地處理視頻幀,以便為用戶提供真實的反饋。

準確度: 它能夠以高精度檢測身體的最小運動。

用途: 它與Python順利集成,使初學者易于實現。

與OpenCV一起,Mediapipe允許我們為二頭肌卷曲跟蹤器捕獲和分析身體運動。

步驟1:設置OpenCV和Mediapipe

我們項目的第一步是設置必要的工具。我們首先安裝了OpenCV和Mediapipe庫,這對捕獲視頻和檢測姿勢至關重要。

以下是安裝過程:

img安裝MediaPipe和OpenCV

安裝完成后,我們在Python腳本中導入了必要的模塊:

img導入必要的Python模塊

在我們的例子中,OpenCV處理視頻捕獲,而Mediapipe檢測姿勢。這兩個庫將共同創建二頭肌卷曲跟蹤器。

步驟2:使用OpenCV捕獲視頻

在這一步中,我們解釋了OpenCV如何從計算機的網絡攝像頭捕獲視頻。來自網絡攝像頭的每一幀都經過處理,使我們能夠實時查看和分析運動。

以下是我們如何拍攝視頻:

img用于從網絡攝像頭流捕獲視頻幀的代碼

步驟3:使用Mediapipe檢測身體關節

下一步是使用Mediapipe來檢測特定的身體關節,如肩膀,肘部和手腕。Mediapipe的姿態估計模型讓我們可以輕松地做到這一點。它為身體的不同部位提供了關鍵點(地標),我們可以用它來跟蹤運動。

我們首先建立了Mediapipe Pose模型。我們還設置了Mediapipe的繪圖和姿勢工具。

img

img

對于每一幀視頻,Mediapipe都會檢測姿勢和地標:

img

這段代碼有助于可視化身體標志,顯示肩膀、肘部和手腕等關節上的點。

第四步:姿勢估計

現在我們有了依賴項,讓我們設置網絡攝像頭提要并開始檢測姿勢。

img

此腳本從網絡攝像頭捕獲視頻并應用姿勢估計,在屏幕上可視化檢測到的姿勢。您將看到Mediapipe如何在真實的時間內識別您身體上的關鍵點。

步驟5:提取關節坐標

接下來,我們將提取特定關節的坐標。這對于以后計算角度至關重要。

img

為了訪問特定的關節,我們使用姿勢標志列表中的索引。例如,左肩的坐標可以如下訪問:

img

步驟6:計算關節角度

為了創建運動跟蹤器,我們需要計算在卷曲過程中二頭肌在不同點的角度。這需要一些簡單的三角函數,我們教學生使用一個函數來計算三點之間的角度:肩膀,肘部和手腕。

下面是我們如何計算角度:

img代碼計算3點之間的角度:肩,肘和手腕

此函數獲取肩、肘和腕的坐標,并計算二頭肌彎曲期間手肘關節的角度。

我們現在可以使用這個函數來計算手肘關節的角度:

img計算并顯示肘關節處的角度

img肩、肘、腕角度顯示

第五步:建立二頭肌卷曲計數器

隨著角度計算到位,我們現在可以建立我們的運動跟蹤器的核心-二頭肌卷曲計數器!計數器將根據手肘的角度跟蹤卷曲的數量。

我們設置了一個計數器變量來跟蹤完成的卷曲次數,并設置了一個階段變量來檢查手臂是處于“向上”還是“向下”的位置。

img計算二頭肌卷曲次數的代碼

這種邏輯確保了手肘從“向下”位置(角度> 160°)移動到“向上”位置(角度< 30°)時,它將被計為一次卷曲。

第6步:構建二頭肌卷曲跟蹤器

最后,我們將結合之前的代碼,實現我們的二頭肌卷曲跟蹤器。我們將根據手肘關節的角度變化來計算卷曲。

所有代碼合并

img

有了這個,你就建立了一個二頭肌卷曲跟蹤器,可以計數總次數和顯示階段手臂所在階段,你的手臂位置(向上或向下)等信息。

img

總結

本文通過使用Mediapipe和OpenCV構建了一個二頭肌卷曲跟蹤器,當然你也可以通過了解基礎知識,擴展此鍛煉監控系統,以跟蹤其他鍛煉,如蹲下,俯臥撐,甚至瑜伽姿勢。這些應用程序不僅提供實時反饋,還使鍛煉更具吸引力和樂趣。


在這里插入圖片描述

好了,這篇文章就介紹到這里,喜歡的小伙伴感謝給點個贊和關注,更多精彩內容持續更新~~
關于本篇文章大家有任何建議或意見,歡迎在評論區留言交流!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65224.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65224.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65224.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nvm如何安裝

一、簡介 在實際的開發和學習中可能會遇到不同項目的 node 版本不同&#xff0c;而出現的兼容性問題。 而 nvm 就可以很好的解決這個問題&#xff0c;它可以在同一臺機器上下管理多個 node 版本&#xff0c;使得程序員可以輕松地安裝、卸載和切換不同的 node 版本。 在下載和配…

cityhash–對字符串的哈希算法

原文地址&#xff1a;cityhash–對字符串的哈希算法 – 無敵牛 歡迎參觀我的個人博客&#xff1a;無敵牛 – 技術/著作/典籍/分享等 分享一個給字符串計算hash的開源庫&#xff0c;谷歌出品。 源代碼在&#xff1a;https://github.com/google/cityhash 可以自己下載&#x…

spring cloud微服務分布式架構

spring cloud微服務分布式架構 應用架構 單體應用架構&#xff1a;all in one 如&#xff1a;前端后端部署在一臺服務器中 web應用和數據庫放在同一臺服務器中&#xff0c;只要服務器掛掉&#xff0c;應用就會終止。 分布式架構&#xff1a;將一個系統拆分為多個獨立的組件&…

【HarmonyOS】鴻蒙應用點9圖的處理(draw9patch)

【HarmonyOS】鴻蒙應用點9圖的處理&#xff08;draw9patch&#xff09; 一、前言&#xff1a; 首先在鴻蒙中是不支持安卓 .9圖的圖片直接使用。只有類似拉伸的處理方案&#xff0c;鴻蒙提供的Image組件有與點九圖相同功能的API設置。 可以通過設置resizable屬性來設置Resiza…

深入Android架構(從線程到AIDL)_12 Android UI 單線程程序

目錄 6、 Android UI 單線程程序 單線程程序概念 單線程可避免線程安全問題 SurfaceView與非UI線程 6、 Android UI 單線程程序 單線程程序概念 單線程程序意謂著兩個(或多個)線程不能共享對象或變量值。Android的UI是單線程程序的環境。UI控件(如Button等)都是由UI線程所…

STM32-筆記36-ADC(模擬/數字轉換器)

一、什么是ADC&#xff1f; 全稱&#xff1a;Analog-to-Digital Converter&#xff0c;指模擬/數字轉換器。 ADC可以將引腳上連續變化的模擬電壓轉換為內存中存儲的數字變量&#xff0c;建立模擬電路到數字電路的橋梁。 12 位 ADC 是一種逐次逼近型模擬數字轉換器&#xff08;0…

房產銷售系統(源碼+數據庫+文檔)

親測完美運行帶論文&#xff1a;文末獲取源碼 文章目錄 項目簡介&#xff08;論文摘要&#xff09;運行視頻包含的文件列表&#xff08;含論文&#xff09;前端運行截圖后端運行截圖 項目簡介&#xff08;論文摘要&#xff09; 隨著科學技術的飛速發展&#xff0c;各行各業都在…

游戲社交趨勢下,游戲語音再升級!

如今&#xff0c;游戲已成為我們社交生活的一個重要娛樂方式&#xff0c;春節臨近&#xff0c;與親朋好友一起暢玩“開黑”無疑是節假日的一大樂趣。在游戲社交互動中&#xff0c;“游戲語音”不可或缺。在傳統游戲語音領域&#xff0c;多人在線游戲如 MOBA、FPS 和 MMORPG 的實…

HTML5實現好看的博客網站、通用大作業網頁模板源碼

HTML5實現好看的博客網站、通用大作業網頁模板源碼 前言一、設計來源1.1 主界面1.2 列表界面1.3 文章界面 二、效果和源碼2.1 動態效果2.2 源代碼 源碼下載結束語 HTML5實現好看的博客網站、通用大作業網頁模板源碼&#xff0c;博客網站源碼&#xff0c;HTML模板源碼&#xff0…

ArcGIS中怎么把數據提取到指定范圍(裁剪、掩膜提取)

最近&#xff0c;經常能收到怎么把數據提取到指定范圍、柵格數據怎么裁剪、矢量數據怎么裁剪、柵格數據怎么掩膜提取的咨詢。 下面是我對這個問題的解決思路&#xff1a; 對于矢量數據&#xff1a; ①首先把數據加載進來 ②軟件界面上面的工具欄找到→地理處理→裁剪&#x…

PHP 使用集合 處理復雜數據 提升開發效率

文章精選推薦 1 JetBrains Ai assistant 編程工具讓你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的圖標增強神器 3 IDEA插件推薦-SequenceDiagram&#xff0c;自動生成時序圖 4 BashSupport Pro 這個ides插件主要是用來干嘛的 &#xff1f; 5 IDEA必裝的插件&…

(轉)rabbitmq怎么保證消息不丟失?

RabbitMQ 可以通過以下多種機制來保證消息不丟失&#xff1a; 生產階段 - 持久化隊列和交換器&#xff1a; - 在聲明隊列和交換器時&#xff0c;將 durable 參數設置為 true &#xff0c;確保它們是持久化的。這樣&#xff0c;即使 RabbitMQ 節點重新啟動&#xff0c;隊列和交…

node.js內置模塊之---stream 模塊

stream 模塊的作用 在 Node.js 中&#xff0c;stream 模塊是一個用于處理流&#xff08;stream&#xff09;的核心模塊。流是一種處理數據的抽象方式&#xff0c;允許程序處理大量數據時不會一次性將所有數據加載到內存中&#xff0c;從而提高性能和內存效率。通過流&#xff0…

手持PDA終端,提升零售門店管理效率

隨著科技的不斷進步和零售行業的持續發展&#xff0c;手持PDA終端的應用將會越來越廣泛。它將不斷融合更多先進的技術和功能&#xff0c;為零售門店管理帶來更加便捷、高效、智能的解決方案。 手持PDA終端是集成了數據處理、條碼掃描、無線通信等多種功能于一體的便攜式設備?…

LeetCode -Hot100 - 53. 最大子數組和

前言 本專欄主要通過“LeetCode 熱題100”&#xff0c;來撿起自己本科階段的算法知識與技巧。語言主要使用c/java。如果同樣正在練習LeetCode 熱題100的朋友歡迎關注或訂閱本專欄。有疑問歡迎留言交流~ 題目描述 題目鏈接 示例 1&#xff1a; 輸入&#xff1a;nums [-2,1…

【51單片機-零基礎chapter1】

安裝軟件(配套的有,不多贅述) 1.管理員身份運行keil和破解軟件kegen 將CID代碼復制粘貼到 一定要管理員方式,不然會error 插入板子 我的電腦,管理 1.如果是拯救者,查看端口,如果沒有則顯示隱藏 2.蘋果不知道,好像不可以 3.其他電腦在"其他設備找" (注:本人在校已…

Go語言的 的設計模式(Design Patterns)基礎知識

Go語言的設計模式基礎知識 引言 設計模式是一種在軟件開發中經常使用的解決特定問題的通用方案。它們為開發者提供了一種有效的方式來組織代碼、提高代碼的可復用性、可維護性和靈活性。在眾多編程語言中&#xff0c;Go語言因其獨特的特性&#xff0c;如并發支持和簡潔的語法…

使用JMeter玩轉tidb壓測

作者&#xff1a; du拉松 原文來源&#xff1a; https://tidb.net/blog/3f1ada39 一、前言 tidb是mysql協議的&#xff0c;所以在使用過程中使用tidb的相關工具連接即可。因為jmeter是java開發的相關工具&#xff0c;直接使用mysql的jdbc驅動包即可。 二、linux下安裝jmet…

C# 設計模式(結構型模式):外觀模式

C# 設計模式&#xff08;結構型模式&#xff09;&#xff1a;外觀模式 (Facade Pattern) 在復雜系統中&#xff0c;往往會涉及到多個子系統、模塊和類。這些子系統的接口和功能可能會讓使用者感到困惑和復雜。在這種情況下&#xff0c;我們可以使用外觀模式&#xff08;Facade…

計算機網絡常見面試題及解答

以下是計算機網絡中常見的面試題及解答&#xff0c;按主題分類&#xff1a; --- ## **一、基礎概念** ### **1. OSI 七層模型和 TCP/IP 模型的區別是什么&#xff1f;** **答&#xff1a;** - **OSI 七層模型&#xff1a;** - 應用層、表示層、會話層、傳輸層、網絡層、數…