手势交互是未来人机交互范畴开展的一个重要方向,本文将参阅运用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[i]=20 or width[i]>=40:
width_jiandao= False
width_length += width[i]
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_length110):
#print ’rock‘;
return 1;
else:
#print ’paper‘;
return 2;
到这儿咱们就完成了整个手型辨认的中心部分,详细的代码较长,直接附件http://pan.baidu.com/s/1kUKSxoV,用该代码运转就能够进行手型检测,作用如下图所示,尽管不精确,可是基本上能够检测出三种不同的手型: