目錄
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括西寧網(wǎng)站建設(shè)、西寧網(wǎng)站制作、西寧網(wǎng)頁制作以及西寧網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,西寧網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到西寧省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!0、項(xiàng)目介紹
1、項(xiàng)目展示
2、項(xiàng)目搭建
3、項(xiàng)目的代碼與講解
4、項(xiàng)目資源
5、項(xiàng)目總結(jié)
? 本篇與上一篇有很多聯(lián)系,大家可以看看這篇Opencv項(xiàng)目實(shí)戰(zhàn):13 手部追蹤,我們將根據(jù)上一節(jié)的內(nèi)容,進(jìn)行一個拓展。本篇你可以學(xué)到如何通過手勢來控制電腦的音量大小。
1、項(xiàng)目展示這個就是一個主要的效果,通過大拇指與食指來控制音量,并在側(cè)邊具有一個音量條,更加美觀和簡潔。
2、項(xiàng)目搭建在上一節(jié)中,我們根據(jù)手部識別寫了一個類模塊HandTrackingModule.py,以便于我們可以在別的項(xiàng)目中直接拿來用。
除此之外,你還需要:
pip install pycaw
有了這個包,我們可以很簡單的與電腦的音量聯(lián)系在一起,點(diǎn)擊這里AndreMiras / pycaw?我們可以在這里看它的README.md文件。
具體是怎么做到,不用在意,我們在這里用到了Usage的部分,將它c(diǎn)v進(jìn)入我們的代碼當(dāng)中。
3、項(xiàng)目的代碼與講解import cv2
import time
import HandTrackingModule as htm
import math
import numpy as np
from ctypes import cast, POINTER
from comtypes import CLSCTX_ALL
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
wCam, hCam = 640, 480
cap = cv2.VideoCapture(0)
cap.set(3, wCam)
cap.set(4, hCam)
pTime = 0
detector = htm.handDetector(detectionCon=0.7)
devices = AudioUtilities.GetSpeakers()
interface = devices.Activate(
IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
volume = cast(interface, POINTER(IAudioEndpointVolume))
volume.GetMute()
volume.GetMasterVolumeLevel()
volRange = volume.GetVolumeRange()
##print的結(jié)果(-74.0, 0.0, 1.0)
minvol,maxvol = volRange[0],volRange[1]
vol=0
volBar=400
volPer=0
while True:
success, img = cap.read()
detector.findHands(img)
lmList=detector.findPosition(img,draw=False)
if len(lmList)!=0:
# print(lmList[4])
x1,y1=lmList[4][1],lmList[4][2]
x2,y2=lmList[8][1],lmList[8][2]
cx,cy=(x1+x2)//2,(y1+y2)//2
cv2.circle(img,(x1,y1),15,(125, 125, 255),cv2.FILLED)
cv2.circle(img, (x2, y2), 15, (125, 125, 255), cv2.FILLED)
cv2.line(img,(x1,y1),(x2,y2),(125, 125, 255),3)
cv2.circle(img, (cx, cy), 15, (125, 125, 255), cv2.FILLED)
length=math.hypot(x2-x1,y2-y1)
if length<50:
cv2.circle(img, (cx, cy), 15, (0, 255, 0), cv2.FILLED)
# print(length)
#handrange 50——300
#volume range -74——0
vol = np.interp(length, [50, 300], [minvol, maxvol])
volBar = np.interp(length, [50, 300], [400, 150])
volPer = np.interp(length, [50, 300], [0, 100])
print(int(length), vol)
volume.SetMasterVolumeLevel(vol, None)
cv2.rectangle(img, (50, 150), (85, 400), (125, 125, 255), 3)
cv2.rectangle(img, (50, int(volBar)), (85, 400), (125, 125, 255), cv2.FILLED)
cv2.putText(img, f'{int(volPer)}%', (40, 450), cv2.FONT_HERSHEY_COMPLEX,
1, (125, 125, 255), 3)
#################打印幀率#####################
cTime = time.time()
fps = 1 / (cTime - pTime)
pTime = cTime
cv2.putText(img, f'FPS: {int(fps)}', (40, 50), cv2.FONT_HERSHEY_COMPLEX,
1, (255, 100, 100), 3)
cv2.imshow("Img", img)
k=cv2.waitKey(1)
if k==27:break
4、項(xiàng)目資源至于另外一個類模塊,大家可以去看看上一篇。在此,我還是來講講實(shí)現(xiàn)效果的思路。
- 首先,是要將我們的攝像頭打開,調(diào)好參數(shù),保證攝像沒有問題,調(diào)用我們另外一個模塊中handDetector函數(shù),提高置信度,實(shí)現(xiàn)手部的跟蹤。
- 其次,打印我們的幀率,并完成對大拇指與食指的位置信息的記錄和標(biāo)點(diǎn),兩點(diǎn)之間在中間點(diǎn)標(biāo)記,這個時候,我們可以打印出來,觀察,在窗口中,呈現(xiàn)近大遠(yuǎn)小,我們決定采用50——300作為我們兩指之間距離的判定,小于50,中間點(diǎn)將會變?yōu)榫G色,大于300,不會對音量再造成影響
- 然后,打印volRange的音量范圍,(-74.0, 0.0, 1.0),最小值,大值,第三個參數(shù),你可以視而不見,np.interp()函數(shù)可以將我們手指距離與音量范圍產(chǎn)生映射,什么意思呢?假如length為變量x,函數(shù)有自變量手指距離與因變量音量范圍構(gòu)成,輸入x,即可得到y(tǒng),這里不好解釋,官方文檔也沒寫清楚,大家要結(jié)合著圖像來理解。
- 最后,復(fù)制pycaw的Usage,其他初始化的我們不用理解,將vol傳入volume.SetMasterVolumeLevel()當(dāng)中,在對側(cè)邊的音量條和音量打印在窗口當(dāng)中。
GitHub:Opencv-project-training/Opencv project training/14 Finger control volume at main · Auorui/Opencv-project-training (github.com)
下載pycaw:
AndreMiras/pycaw: Python Core Audio Windows Library (github.com)
5、項(xiàng)目總結(jié)本次結(jié)合了上一次的類模塊,做了一個新項(xiàng)目,很不錯的想法,當(dāng)然,這里要感謝AndreMiras,讓我能夠輕松的完成本次項(xiàng)目。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧