服务器之家

服务器之家 > 正文

OpenCV+python手势识别框架和实例讲解

时间:2021-03-25 09:57     来源/作者:静默虚空

基于opencv2.4.8和 python 2.7实现简单的手势识别

以下为基本步骤

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

2. rgb->yuv,同时计算直方图

3.进行形态学滤波,提取感兴趣的区域

4.找到二值化的图像轮廓

5.找到最大的手型轮廓

6.找到手型轮廓的凸包

7.标记手指和手掌

8.把提取的特征点和手势字典中的进行比对,然后判断手势和形状

提取手的轮廓 cv2.findcontours()

OpenCV+python手势识别框架和实例讲解

找到最大凸包cv2.convexhull(),然后找到手掌和手指的相对位置,定位手型的轮廓和关键点,包括手掌的中心,手指的相对位置

OpenCV+python手势识别框架和实例讲解

特征字典主要包括以下几个方面:名字,手掌中心点,手掌的直径,手指的坐标点,手指的个数,每个手指之间的角度

例如:

?
1
2
3
4
5
6
7
# 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 --------------------------------------#

最终的识别结果如下:

OpenCV+python手势识别框架和实例讲解

示例代码

?
1
2
3
4
5
6
7
8
9
10
11
12
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手势识别框架和实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/linsk/article/details/76457955

标签:

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
返回顶部