OpenCV python手勢識別框架和簡單例子

2021-08-04 16:12:07 字數 1474 閱讀 9863

基於opencv2.4.8和 python 2.7實現簡單的手勢識別。

以下為基本步驟

1.去除背景,提取手的輪廓

2. rgb->yuv,同時計算直方圖

3.進行形態學濾波,提取感興趣的區域

4.找到二值化的影象輪廓

5.找到最大的手型輪廓

6.找到手型輪廓的凸包

7.標記手指和手掌

8.把提取的特徵點和手勢字典中的進行比對,然後判斷手勢和形狀

提取手的輪廓 cv2.findcontours()

找到最大凸包cv2.convexhull(),然後找到手掌和手指的相對位置,定位手型的輪廓和關鍵點,包括手掌的中心,手指的相對位置

特徵字典主要包括以下幾個方面:名字,手掌中心點,手掌的直徑,手指的座標點,手指的個數,每個手指之間的角度

例如:# begin ------------------------------------#

v=gesture("v")

v.set_palm((475,225),45)

v.set_finger_pos([(490,90),(415,105)])

v.calc_angles()

dict[v.getname()]=v

# end --------------------------------------#

最終的識別結果如下:

示例**

frame=hand_threshold(fg_frame,hand_histogram)

contour_frame=np.copy(frame)

found,hand_contour=hand_contour_find(contours)

if(found):

hand_convex_hull=cv2.convexhull(hand_contour)

frame,hand_center,hand_radius,hand_size_score=mark_hand_center(frame_original,hand_contour)

if(hand_size_score):

frame,finger,palm=mark_fingers(frame,hand_convex_hull,hand_center,hand_radius)

frame,gesture_found=find_gesture(frame,finger,palm)

else:

frame=frame_original

GestureDetector手勢滑動識別

手勢識別是我們日常使用電子物品中非常常見的乙個功能,這個功能大大提公升了使用者體驗的感受 手勢識別主要有兩種方法,一種是gesturedetector,另一種是gestureoverlayview 現在來研究下gesturedetector方法 1.手指觸屏的一瞬間,觸發motionevent事件 ...

opencv python 對指標儀表讀數識別

用opencv 對指標儀表進行讀數識別,1.先模板匹配,然後邊緣檢測 霍夫直線 2.按輪廓大小過濾,然後邊緣檢測 霍夫直線 兩種方式對光線都非常敏感 其中第一種的應用範圍更廣,背景複雜一點也能識別到 個人比較喜歡這種方式 第二種的限制多一點,對背景 光線條件要求比較高 對於固定位置,且明暗變化不大的...

判斷手勢 康奈爾研發的手套不僅識別手勢,還識別觸覺

近年來,在oculus quest系列一體機的推動下,vr以更加 平易近人 的姿態切入c端遊戲市場,同時也讓更多vr玩家體驗到用手勢來互動的方式。quest和quest 2利用頭顯配備的4顆光學攝像頭和演算法來識別手勢,優勢是低成本 效能足夠穩定 容易上手。當然,現有方案幾乎很少用於c端,因為成本較...