亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

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

項(xiàng)目效果圖

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

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

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

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

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í)測(cè)也支持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ì)識(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é)語(yǔ)

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

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

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

相關(guān)文章

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

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

    這篇文章主要介紹了Python Django路徑配置實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(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說(shuō)明

    python操作yaml說(shuō)明

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

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

    還記得你是如何進(jìn)行代碼調(diào)試的嗎?有人會(huì)說(shuō),我是添加一些輸出語(yǔ)句,有人說(shuō),我是使用IDE自帶的設(shè)置斷點(diǎn)功能,當(dāng)然都沒(méi)有錯(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_的用法及說(shuō)明

    pytorch之scatter_的用法及說(shuō)明

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

    Python中一行和多行import模塊問(wèn)題

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

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

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

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

    這篇文章主要介紹了利用python繪制數(shù)據(jù)曲線(xiàn)圖的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(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)論