欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python+OpenCV手勢檢測與識(shí)別Mediapipe基礎(chǔ)篇

 更新時(shí)間:2022年12月10日 11:53:18   作者:BIGBOSSyifi  
網(wǎng)上搜到了一些關(guān)于手勢處理的實(shí)驗(yàn),我在這兒簡單的實(shí)現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于Python+OpenCV手勢檢測與識(shí)別Mediapipe基礎(chǔ)篇的相關(guān)資料,需要的朋友可以參考下

前言

本篇文章適合剛?cè)腴TOpenCV的同學(xué)們。文章將介紹如何使用Python利用OpenCV圖像捕捉,配合強(qiáng)大的Mediapipe庫來實(shí)現(xiàn)手勢檢測與識(shí)別;本系列后續(xù)還會(huì)繼續(xù)更新Mediapipe手勢的各種衍生項(xiàng)目,還請多多關(guān)注!

項(xiàng)目效果圖

視頻捕捉幀數(shù)穩(wěn)定在(25-30)

認(rèn)識(shí)Mediapipe

項(xiàng)目的實(shí)現(xiàn),核心是強(qiáng)大的Mediapipe ,它是google的一個(gè)開源項(xiàng)目:

功能詳細(xì)
人臉檢測 FaceMesh從圖像/視頻中重建出人臉的3D Mesh
人像分離從圖像/視頻中把人分離出來
手勢跟蹤21個(gè)關(guān)鍵點(diǎn)的3D坐標(biāo)
人體3D識(shí)別33個(gè)關(guān)鍵點(diǎn)的3D坐標(biāo)
物體顏色識(shí)別可以把頭發(fā)檢測出來,并圖上顏色

Mediapipe Dev:https://mediapipe.dev/

以上是Mediapipe的幾個(gè)常用功能 ,這幾個(gè)功能我們會(huì)在后續(xù)一一講解實(shí)現(xiàn)

Python安裝Mediapipe

pip install mediapipe==0.8.9.1

也可以用 setup.py 安裝

https://github.com/google/mediapipe

項(xiàng)目環(huán)境

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

實(shí)測也支持Python3.8-3.9

代碼

核心代碼

OpenCV攝像頭捕捉部分

import cv2

cap = cv2.VideoCapture(0)       #OpenCV攝像頭調(diào)用:0=內(nèi)置攝像頭(筆記本)   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)      #關(guān)閉窗體

mediapipe 手勢識(shí)別與繪制

#定義并引用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)
            
            #繪制手部特征點(diǎn):
            mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)

視頻幀率計(jì)算

import time

#幀率時(shí)間計(jì)算
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的字號(hào),顏色等設(shè)置

完整代碼

# 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攝像頭調(diào)用:0=內(nèi)置攝像頭(筆記本)   1=USB攝像頭-1  2=USB攝像頭-2

#定義并引用mediapipe中的hands模塊
mpHands = mp.solutions.hands
hands = mpHands.Hands()
mpDraw = mp.solutions.drawing_utils

#幀率時(shí)間計(jì)算
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)
            
            #繪制手部特征點(diǎn):
            mpDraw.draw_landmarks(img, handLms, mpHands.HAND_CONNECTIONS)
    '''''
    視頻FPS計(jì)算
       '''
    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的字號(hào),顏色等設(shè)置

    cv2.imshow("HandsImage", img)       #CV2窗體
    cv2.waitKey(1)      #關(guān)閉窗體

項(xiàng)目輸出

結(jié)語

以此篇文章技術(shù)為基礎(chǔ),后續(xù)會(huì)更新利用此篇基礎(chǔ)技術(shù)實(shí)現(xiàn)的《手勢控制:音量,鼠標(biāo)

項(xiàng)目下載地址https://github.com/BIGBOSS-dedsec/HandsDetection_Python

到此這篇關(guān)于Python+OpenCV手勢檢測與識(shí)別Mediapipe基礎(chǔ)篇的文章就介紹到這了,更多相關(guān)Python OpenCV手勢識(shí)別Mediapipe內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python Django路徑配置實(shí)現(xiàn)過程解析

    Python Django路徑配置實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python Django路徑配置實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • python解包概念及實(shí)例

    python解包概念及實(shí)例

    在本篇文章里小編給大家分享的是一篇關(guān)于python解包知識(shí)點(diǎn)總結(jié),對(duì)此有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-02-02
  • python操作yaml說明

    python操作yaml說明

    這篇文章主要介紹了python操作yaml說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python工具PDB調(diào)試器的使用方法詳解

    Python工具PDB調(diào)試器的使用方法詳解

    還記得你是如何進(jìn)行代碼調(diào)試的嗎?有人會(huì)說,我是添加一些輸出語句,有人說,我是使用IDE自帶的設(shè)置斷點(diǎn)功能,當(dāng)然都沒有錯(cuò),只是看哪個(gè)更合適,更能提升效率,但這都不是我們今天講的重點(diǎn),今天的重點(diǎn)是Python中PDB調(diào)試器的使用方法,需要的朋友可以參考下
    2023-11-11
  • Python綜合應(yīng)用名片管理系統(tǒng)案例詳解

    Python綜合應(yīng)用名片管理系統(tǒng)案例詳解

    這篇文章主要介紹了Python綜合應(yīng)用名片管理系統(tǒng),結(jié)合具體案例形式詳細(xì)分析了Python名片管理系統(tǒng)相關(guān)步驟、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-01-01
  • pytorch之scatter_的用法及說明

    pytorch之scatter_的用法及說明

    這篇文章主要介紹了pytorch之scatter_的用法及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python中一行和多行import模塊問題

    Python中一行和多行import模塊問題

    我們通過本篇文章給大家分析了為什么Python不建議使用一行import所有模塊的原因,有興趣的朋友學(xué)習(xí)下。
    2018-04-04
  • python中文件操作與異常的處理圖文詳解

    python中文件操作與異常的處理圖文詳解

    在實(shí)際開發(fā)中常常需要對(duì)程序中的數(shù)據(jù)進(jìn)行持久化操作,而實(shí)現(xiàn)數(shù)據(jù)持久化最直接簡單的方式就是將數(shù)據(jù)保存到文件中,下面這篇文章主要給大家介紹了關(guān)于python中文件操作與異常處理的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • 利用python繪制數(shù)據(jù)曲線圖的實(shí)現(xiàn)

    利用python繪制數(shù)據(jù)曲線圖的實(shí)現(xiàn)

    這篇文章主要介紹了利用python繪制數(shù)據(jù)曲線圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • python3序列化與反序列化用法實(shí)例

    python3序列化與反序列化用法實(shí)例

    這篇文章主要介紹了python3序列化與反序列化用法,實(shí)例分析了Python3使用pickle模塊針對(duì)字符串進(jìn)行序列化操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05

最新評(píng)論