首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

如何基于Dragoboard 410c开发板设计简单手型识别方案?

如何基于Dragoboard 410c开发板设计简单手型识别方案?

手势交互是未来人机交互领域发展的一个重要方向,本文将参考使用Opencv实现静态手势识别玩转石头剪刀布一文,教大家如何在Dragoboard 410c开发板上使用Python脚本语言实现简单的手型识别,通过从USB摄像头获取手型图像,然后识别出石头-剪刀-布三个手型。具体实现步骤如下:
1)获取USB摄像头图像:
这里主要是通过Opencv提供的Python接口cv2,具体可以参考410c板获取USB摄像头图像一文,里面详细介绍了在dragonboard 410c上使用USB摄像头获取图像。
2)设置手势区域
在视频区域内设置一个手势区域,只有将手放入到该区域,系统才可以正确的识别手型,其他区域的系统不做处理,具体代码如下:
#设置手型区域
cv2.rectangle(img,(426,0),(640,250),(170,170,0))
#获取手型区域图像并保存
img = img[0:210,426:640]
cv2.imwrite(“wif.jpg”,img)
3)对检测区域进行图像处理,其核心代码如下:
img = cv2.imread(“wif.jpg”,0)
element = cv2.getStructuringElement(cv2.MORPH_RECT,(11,11))
dilate = cv2.dilate(img, element)
erode = cv2.erode(img, element)
result = cv2.absdiff(dilate,erode);
retval, result = cv2.threshold(result, 40, 255, cv2.THRESH_BINARY);
result = cv2.bitwise_not(result);
result =cv2.medianBlur(result,23)
4)判断手型,其中部分核心代码如下:
if width<=20 or width>=40:
width_jiandao= False
width_length += width
if width_jiandao==True and count==2:
return 1;
if(area <8500):
#print ‘stone;
return 0;
print “width_leng”,width_length
......
if(area>14000 or count>=3):
#print ’paper‘;
return 2;
if(width_length<110):
#print ’rock‘;
return 1;
else:
#print ’paper‘;
return 2;
返回列表