如何用Opencv实现静态手势识别玩石头剪刀布?.doc

如何用Opencv实现静态手势识别玩石头剪刀布?.doc

ID:27873643

大小:1.08 MB

页数:8页

时间:2018-12-06

如何用Opencv实现静态手势识别玩石头剪刀布?.doc_第1页
如何用Opencv实现静态手势识别玩石头剪刀布?.doc_第2页
如何用Opencv实现静态手势识别玩石头剪刀布?.doc_第3页
如何用Opencv实现静态手势识别玩石头剪刀布?.doc_第4页
如何用Opencv实现静态手势识别玩石头剪刀布?.doc_第5页
资源描述:

《如何用Opencv实现静态手势识别玩石头剪刀布?.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、如何用Opencv实现静态手势识别玩石头剪刀布?  要想运行该代码,请确保安装了:python2.7,opencv2.4.9  效果如下:                算法如下:  把图片先进行处理,处理过程:  1.用膨胀图像与腐蚀图像相减的方法获得轮廓。  2.用二值化获得图像  3.反色  经过如上的处理之后,图片为:    这之后就简单了,设计一个办法把三种图像区分开来即可。  代码如下:  #-*-coding:cp936-*-importcv2importnumpyimportTImeimportrandomimportosdefjudge()

2、:  #构造一个3&TImes;3的结构元素  #return0stone,1jiandao,2bu  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);  #上面得到的

3、结果是灰度图,将其二值化以便更清楚的观察结果  retval,result=cv2.threshold(result,40,255,cv2.THRESH_BINARY);  #反色,即对二值图每个像素取反  result=cv2.bitwise_not(result);  result=cv2.medianBlur(result,23)  a=[]  posi=[]  width=[]  count=0  area=0  foriinrange(result.shape[1]):  forjinrange(result.shape[0]):  if(resu

4、lt[j][i]==0):  area+=1  foriinrange(result.shape[1]):  if(result[5*result.shape[0]/16][i]==0andresult[5*result.shape[0]/16][i-1]!=0):  count+=1  width.append(0)  posi.append(i)  if(result[5*result.shape[0]/16][i]==0):  width[count-1]+=1  ”““  print‘thepicwidthis‘,result.shape[1],’

5、n’  foriinrange(count):  print‘the‘,i,’th’,’‘,’is’;  print‘width‘,width[i]  print‘posi‘,posi[i],’’  printcount,’’  print‘areais‘,area,’’  cv2.line(result,(0,5*result.shape[0]/16),(214,5*result.shape[0]/16),(0,0,0))  cv2.namedWindow(“fcuk”)  cv2.imshow(“fcuk”,result)  cv2.wait

6、Key(0)  ”““  #判定时间  width_length=0  width_jiandao=True  foriinrange(count):  ifwidth[i]>45:  #print‘bu1’;  return2;  ifwidth[i]=40:  width_jiandao=False  width_length+=width[i]  ifwidth_jiandao==Trueandcount==2:  return1;  if(area45:  #print‘bu1’;  return2;  ifwidth[i]=40:  width_j

7、iandao=False  width_length+=width[i]  ifwidth_jiandao==Trueandcount==2:  return1;  if(area>14000orcount>=3):  #print‘bu2’;  return2;  if(width_length5):  break  if(cv2.waitKey(30)>=0):  breakha,img=capture.read()capture.release()cv2.imshow(“camera”,img)img=img[0:210,426:640]cv2.imw

8、rite(“wif.jpg”,img)judge()

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。