OpenCV利用手勢識別實現虛擬拖放效果

2022-09-26 12:21:13 字數 2091 閱讀 3366

目錄

本文將實現一些通過手拖放一些框,我們可以使用這個技術實現一些遊戲,控制機械臂等很多有趣的事情。

通過opencv設定顯示框和呼叫攝像頭顯示當前畫面

import cv2

cap = cv2.videocapture(0)

cap.set(3,1280)

cap.set(4,720)

while true:

succes, img = cap.read()

cv2.imshow("image", img)

cv2.w程式設計客棧aitkey(1)

在當前畫面中找到手,本文將使用cv zone中的手跟蹤模組

from cvzone.handtrackingmodule import handdetector

detector = handdetector(detectioncon=0.8)#更改了預設的置信度,讓其檢測更加準確

找到手的完整**

import cv2

from cvzone.handtrackingmodule import handdetector

cap = cv2.videocapture(0)

cap.set(3,1280)

cap.set(4,720)

detector = handdetector(detectioncon=0.8)

while true:

succes, img = cap.read()

detector.findhands(img)

lmlist, _ = detector.findposition(img)

cv2.imshow("image", img)

cv2.waitkey(1)

第三步首先建立乙個方塊

cv2.rectangle(img, (100,100), (300,300), (0, 0 , 255),cv2.filled)

然後檢測我們的食指有沒有進入到這個方框中,如果進入的話,這個方框就改變顏色 

if lmlist:

cursor = lmlist[8]

if 100程式設計客棧00:

colorr =0, 255, 0

else:

colorr = 0,0,255

cv2.rectangle(img, (100,1程式設計客棧00), (300,300), colorr,cv2.filled)

然後檢測我們是否點選這個方框

當我們食指的之間在這個方框的中心,就會跟隨為我們的指尖運動。

但是這樣的話,我們不想這個方塊跟隨我,我就得很快的將手移開,不是很方便。

所以我們要模擬滑鼠點選確定是否選中它,所以我們就在加入xqryn了一根中指來作為判斷,那判斷的依據就是中指和食指指尖的距離。

l,_,_ = detector.finddistance(8,12,img)

假設倆指尖的距離小於30就選中,大於30就取消

if l<30:

cursor = lmlist[8]

if cx-w//2

import cv2

from cvzone.handtrackingmodule import handdetector

cap = cv2.videocapture(0)

cap.set(3,1280)

cap.set(4,720)

colorr =(0, 0, 255)

detector = handdetector(detectioncon=0.8)

cx, cy, w, h= 100, 100, 200, 200

while true:

succes, img = cap.read()

img = cv2.flip(img, 1)

detector.findhands(img)

lmlist, _ = detector.findposition(img)

if lmlist:

l,_,_ = detector.finddistance(8,12,img)

print(l)

if l<30:

cursor = lmlist[8]

if cx-w//2程式設計客棧h//2

Android中使用手勢識別功能

使用android中的手勢識別,可以完成很多有趣的事情,比如使用手勢識別來做出一些動作,打 給某人,關閉頁面,開啟指定的應用,還可以使用手勢識別作為賬戶密碼等等,下面分享一下如何在android中實現手勢識別 第一步 建立手勢庫 我們這裡要使用androidsdksamples裡面自帶的gestur...

利用手勢控制arduino輸出埠

include include include include include include using namespace cv using namespace std mat frame handle hcomm lpcwstr pstr l com4 char lpoutbuffer 100...

opencv 手勢識別雜亂知識點

1.初始化矩陣 mat depthshow1 size 640,480 cv 8uc1,scalar 255 大小640 480 單通道灰度影象,灰度大小為255 2.設定roi區域 影象中自己感興趣的矩形區域 rect roi roi.x 50 roi.y 50 roi.width 100 roi...