<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本篇文章適合剛入門OpenCV的同學們。文章將介紹如何使用Python利用OpenCV影象捕捉,配合強大的Mediapipe庫來實現手勢檢測與識別;本系列後續還會繼續更新Mediapipe手勢的各種衍生專案,還請多多關注!
視訊捕捉幀數穩定在(25-30)
專案的實現,核心是強大的Mediapipe ,它是google的一個開源專案:
功能 | 詳細 |
---|---|
人臉檢測 FaceMesh | 從影象/視訊中重建出人臉的3D Mesh |
人像分離 | 從影象/視訊中把人分離出來 |
手勢跟蹤 | 21個關鍵點的3D座標 |
人體3D識別 | 33個關鍵點的3D座標 |
物體顏色識別 | 可以把頭髮檢測出來,並圖上顏色 |
Mediapipe Dev:https://mediapipe.dev/
以上是Mediapipe的幾個常用功能 ,這幾個功能我們會在後續一一講解實現
Python安裝Mediapipe
pip install mediapipe==0.8.9.1
也可以用 setup.py 安裝
https://github.com/google/mediapipe
Python 3.7
Mediapipe 0.8.9.1
Numpy 1.21.6
OpenCV-Python 4.5.5.64
OpenCV-contrib-Python 4.5.5.64
實測也支援Python3.8-3.9
OpenCV攝像頭捕捉部分:
import cv2 cap = cv2.VideoCapture(0) #OpenCV攝像頭呼叫:0=內建攝像頭(筆電) 1=USB攝像頭-1 2=USB攝像頭-2 while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #cv2影象初始化 cv2.imshow("HandsImage", img) #CV2表單 cv2.waitKey(1) #關閉表單
mediapipe 手勢識別與繪製
#定義並參照mediapipe中的hands模組 mpHands = mp.solutions.hands hands = mpHands.Hands() mpDraw = mp.solutions.drawing_utils while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #cv2影象初始化 results = hands.process(imgRGB) # print(results.multi_hand_landmarks) if results.multi_hand_landmarks: for handLms in results.multi_hand_landmarks: for id, lm in enumerate(handLms.landmark): # print(id, lm) h, w, c = img.shape cx, cy = int(lm.x * w), int(lm.y * h) print(id, cx, cy) # if id == 4: cv2.circle(img, (cx, cy), 15, (255, 0, 255), cv2.FILLED) #繪製手部特徵點: mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)
import time #影格率時間計算 pTime = 0 cTime = 0 while True cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 255), 3) #FPS的字號,顏色等設定
# Coding BIGBOSSyifi # Datatime:2022/4/24 21:41 # Filename:HandsDetector.py # Toolby: PyCharm import cv2 import mediapipe as mp import time cap = cv2.VideoCapture(0) #OpenCV攝像頭呼叫:0=內建攝像頭(筆電) 1=USB攝像頭-1 2=USB攝像頭-2 #定義並參照mediapipe中的hands模組 mpHands = mp.solutions.hands hands = mpHands.Hands() mpDraw = mp.solutions.drawing_utils #影格率時間計算 pTime = 0 cTime = 0 while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) #cv2影象初始化 results = hands.process(imgRGB) # print(results.multi_hand_landmarks) if results.multi_hand_landmarks: for handLms in results.multi_hand_landmarks: for id, lm in enumerate(handLms.landmark): # print(id, lm) h, w, c = img.shape cx, cy = int(lm.x * w), int(lm.y * h) print(id, cx, cy) # if id == 4: cv2.circle(img, (cx, cy), 15, (255, 0, 255), cv2.FILLED) #繪製手部特徵點: mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS) ''''' 視訊FPS計算 ''' cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (10, 70), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 255), 3) #FPS的字號,顏色等設定 cv2.imshow("HandsImage", img) #CV2表單 cv2.waitKey(1) #關閉表單
以此篇文章技術為基礎,後續會更新利用此篇基礎技術實現的《手勢控制:音量,滑鼠》
專案下載地址https://github.com/BIGBOSS-dedsec/HandsDetection_Python
到此這篇關於Python+OpenCV手勢檢測與識別Mediapipe基礎篇的文章就介紹到這了,更多相關Python OpenCV手勢識別Mediapipe內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45