超好玩的"隔空操物"通過Python?MediaPipe庫實現(xiàn)
?? 文章簡介 :本篇文章的實戰(zhàn)部分中主要使用到了 MediaPipe 與 OpenCv 兩個庫,實現(xiàn)了隔空操作的效果,主要有**隔空操作鼠標(biāo),隔空繪畫,隔空控制音量與隔空手勢識別 **??
使用這個編程語言,我實現(xiàn)了隔空操物!!
1.項目效果展示
項目主要分為四個部分,分別是
- 隔空音量控制
- 隔空繪畫
- 隔空識別手勢
- 隔空操作鼠標(biāo)
下面是這四部分的演示效果
1.1:隔空音量控制

1.2:隔空繪畫

1.3 :手勢識別

1.4:鼠標(biāo)模擬

2.所涉及到的庫
上面這些應(yīng)用的實現(xiàn)主要涉及到了兩個庫
- OpenCv
- MediaPipe
2.1:OpenCv簡介
OpenCV是一個基于Apache2.0許可發(fā)行的跨平臺計算機(jī)視覺與機(jī)器學(xué)習(xí)的軟件庫。
可以運(yùn)行在多種操作系統(tǒng),例如Linux,Window,Mac OS等等。它輕量級而且高效——由一系列 C 函數(shù)和少量 C++ 類構(gòu)成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。
2.2:MediaPipe簡介
MediaPipe是一由Google開發(fā)并開源的數(shù)據(jù)流處理機(jī)器學(xué)習(xí)應(yīng)用開發(fā)框架。
它是一個基于圖的數(shù)據(jù)處理管線,用于構(gòu)建使用了多種形式的數(shù)據(jù)源,如視頻、音頻、傳感器數(shù)據(jù)以及任何時間序列數(shù)據(jù)。
MediaPipe是跨平臺的,可以運(yùn)行在多種操作系統(tǒng),工作站和服務(wù)器上,并支持移動端GPU加速。
使用MediaPipe,可以將機(jī)器學(xué)習(xí)任務(wù)構(gòu)建為一個圖形的模塊表示的數(shù)據(jù)流管道,包括推理模型和流媒體處理功能。
3.項目環(huán)境搭建
這些應(yīng)用的環(huán)境方便比較簡單,可以直接在pycharm里面進(jìn)行安裝對應(yīng)的庫即可使用。如果遇到庫不能下載或者是超時,可以進(jìn)行pip換源下載,本應(yīng)用使用Python進(jìn)行編寫
4.源碼部分
應(yīng)用涉及到的源碼比較多,這里就不一 一進(jìn)行貼出來了。
想要實踐一下的同學(xué)可以私信我獲取,或者是直接點(diǎn)擊文章底部關(guān)注公眾號,點(diǎn)擊聯(lián)系我添加備注源碼獲取 下面是關(guān)鍵部分代碼的一些截取內(nèi)容。
cap = cv2.VideoCapture(0) #若使用外接攝像頭 則更改為1或其他編號
cap.set(3, wCam)
cap.set(4, hCam)
pTime = 0
detector = handDetector()
success, img = cap.read()
img = detector.findHands(img)
lmList = detector.findPosition(img, draw=False)
pointList = [4, 8, 12, 16, 20]
if len(lmList) != 0:
countList = []
if lmList[4][1] > lmList[3][1]:
countList.append(1)
else:
countList.append(0)
for i in range(1, 5):
if lmList[pointList[i]][2] < lmList[pointList[i] - 2][2]:
countList.append(1)
else:
countList.append(0)
count = countList.count(1)
HandImage = cv2.imread(f'FingerImg/{count}.jpg')
HandImage = cv2.resize(HandImage, (150, 200))
h, w, c = HandImage.shape
img[0:h, 0:w] = HandImage
cv2.putText(img, f'{int(count)}', (15, 400), cv2.FONT_HERSHEY_PLAIN, 15, (255, 0, 255), 10)
5.總結(jié)
上面這四個項目主要是調(diào)用到了一些機(jī)器學(xué)習(xí)的庫進(jìn)行代碼的編寫。感興趣的小伙伴可以導(dǎo)入項目在自己的電腦上進(jìn)行實操一下。
到此這篇關(guān)于超好玩的"隔空操物"通過Python MediaPipe庫實現(xiàn)的文章就介紹到這了,更多相關(guān)Python 隔空操物內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
YOLOv5車牌識別實戰(zhàn)教程(六)性能優(yōu)化與部署
這篇文章主要介紹了YOLOv5車牌識別實戰(zhàn)教程(六)性能優(yōu)化與部署,在這個教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下2023-04-04
python學(xué)習(xí)手冊中的python多態(tài)示例代碼
多態(tài)是面向?qū)ο笳Z言的一個基本特性,多態(tài)意味著變量并不知道引用的對象是什么,根據(jù)引用對象的不同表現(xiàn)不同的行為方式,下面使用一個示例學(xué)習(xí)他的使用方法2014-01-01
Python pygame實現(xiàn)中國象棋單機(jī)版源碼
今天給大家?guī)淼氖顷P(guān)于Python實戰(zhàn)的相關(guān)知識,文章圍繞著用Python pygame實現(xiàn)中國象棋單機(jī)版展開,文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-06-06
OpenCV-Python直方圖均衡化實現(xiàn)圖像去霧
直方圖均衡化可以達(dá)到增強(qiáng)圖像顯示效果的目的。最常用的比如去霧。本文就來實現(xiàn)直方圖均衡化實現(xiàn)圖像去霧,感興趣的可以了解一下2021-06-06
Django實現(xiàn)帶進(jìn)度條的倒計時功能詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Django實現(xiàn)簡單的帶進(jìn)度條的倒計時功能,可以在頁面加載后自動開始計時,下次計時需要手動刷新頁面,需要的可以參考一下2023-04-04

