基於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端,因為成本較...