OpenCV+python手勢識別框架和實例講解
基于OpenCV2.4.8和 python 2.7實現(xiàn)簡單的手勢識別。
以下為基本步驟
1.去除背景,提取手的輪廓
2. RGB->YUV,同時計算直方圖
3.進行形態(tài)學濾波,提取感興趣的區(qū)域
4.找到二值化的圖像輪廓
5.找到最大的手型輪廓
6.找到手型輪廓的凸包
7.標記手指和手掌
8.把提取的特征點和手勢字典中的進行比對,然后判斷手勢和形狀
提取手的輪廓 cv2.findContours()

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

特征字典主要包括以下幾個方面:名字,手掌中心點,手掌的直徑,手指的坐標點,手指的個數(shù),每個手指之間的角度
例如:
# 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 --------------------------------------#
最終的識別結(jié)果如下:

示例代碼
frame=hand_threshold(fg_frame,hand_histogram)
contour_frame=np.copy(frame)
contours,hierarchy=cv2.findContours(contour_frame,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
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
以上這篇OpenCV+python手勢識別框架和實例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python基于easygui實現(xiàn)pdf和word轉(zhuǎn)換小程序
這篇文章主要為大家詳細介紹了Python如何基于easygui實現(xiàn)pdf和word轉(zhuǎn)換小程序,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2024-04-04
python數(shù)據(jù)分析apply(),map(),applymap()用法
這篇文章主要介紹了python數(shù)據(jù)分析apply(),map(),applymap()用法,可以方便地實現(xiàn)對批量數(shù)據(jù)的自定義操作。用法歸納如下,需要的朋友可以參考一下2022-03-03
Python+imbox庫實現(xiàn)郵件讀取與刪除和附件下載
這篇文章主要為大家詳細介紹了Python如何使用imbox庫實現(xiàn)郵件讀取與刪除以及附件下載,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下2025-02-02
python轉(zhuǎn)換wrf輸出的數(shù)據(jù)為網(wǎng)頁可視化json格式
這篇文章主要介紹了python轉(zhuǎn)換wrf輸出的數(shù)據(jù)為網(wǎng)頁可視化json格式,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-09-09

