美文网首页
石头、剪刀、布的识别

石头、剪刀、布的识别

作者: 大龙10 | 来源:发表于2023-10-15 12:58 被阅读0次

书名:计算机视觉40例从入门到深度学习:OpenCV-Python
作者:李立宗
出版社:电子工业出版社
出版时间:2022-07-01
ISBN:9787121436857


一、石头、剪刀、布的识别

  • 通过形状匹配识别石头、剪刀、布手势。
  • 手势识别范例如图8-10所示,在识别手势时,将待识别手势与已知形状的手势模型的相似度匹配值作为判断依据,待识别手势与哪个手势模型最相似就将结果识别为哪个手势模型对应的手势。


    图8-10 手势识别范例

二、程序实现


import cv2

def reg(x):
    # --------------读取并绘制原始图像------------------
    o1 =  cv2.imread('d:\\OpenCVpic\\paper.jpg')  
    o2 =  cv2.imread('d:\\OpenCVpic\\rock.jpg')  
    o3 =  cv2.imread('d:\\OpenCVpic\\sessiors.jpg')  
    # --------------提取轮廓------------------
    gray1 = cv2.cvtColor(o1,cv2.COLOR_BGR2GRAY)  
    gray2 = cv2.cvtColor(o2,cv2.COLOR_BGR2GRAY)  
    gray3 = cv2.cvtColor(o3,cv2.COLOR_BGR2GRAY)  
    xgray = cv2.cvtColor(x,cv2.COLOR_BGR2GRAY) 
    ret, binary1 = cv2.threshold(gray1,127,255,cv2.THRESH_BINARY)  
    ret, binary2 = cv2.threshold(gray2,127,255,cv2.THRESH_BINARY)  
    ret, binary3 = cv2.threshold(gray3,127,255,cv2.THRESH_BINARY)  
    ret, xbinary = cv2.threshold(xgray,127,255,cv2.THRESH_BINARY)  

    contours1, hierarchy = cv2.findContours(binary1, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)  
    contours2, hierarchy = cv2.findContours(binary2, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)  
    contours3, hierarchy = cv2.findContours(binary3, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)  
    xcontours, hierarchy = cv2.findContours(xbinary, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)  

    cnt1=contours1[0]
    cnt2=contours2[0]
    cnt3=contours3[0]
    x=xcontours[0]
    ret=[]
    ret.append(cv2.matchShapes(x,cnt1,1,0.0))
    ret.append(cv2.matchShapes(x,cnt2,1,0.0))
    ret.append(cv2.matchShapes(x,cnt3,1,0.0))
    
    max_index=ret.index(min(ret))
    if max_index==0:
        r="paper"
    elif max_index==1:
        r="rock"    
    else:
        r="sessiors"    
    return r

t1 =  cv2.imread('d:\\OpenCVpic\\test1.jpg')  
t2 =  cv2.imread('d:\\OpenCVpic\\test2.jpg')  
t3 =  cv2.imread('d:\\OpenCVpic\\test3.jpg')  

# ====设置与显示识别结果相关的参数=======
org=(0,60)
font = cv2.FONT_HERSHEY_PLAIN
fontScale=2
color=(0,0,255)
thickness=3
# ====显示识别结果======
cv2.putText(t1,reg(t1),org,font,fontScale,color,thickness)
cv2.putText(t2,reg(t2),org,font,fontScale,color,thickness)
cv2.putText(t3,reg(t3),org,font,fontScale,color,thickness)
cv2.imshow('test1',t1)
cv2.imshow('test2',t2)
cv2.imshow('test3',t3)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果

相关文章

  • 石头剪刀布的联想

    小时候-石头剪刀布,你出剪刀我出布,糖果是你的;长大后-石头剪刀布,你出石头我出布,快乐是我们的;石头剪刀布,一个...

  • noip 2014总结

    生活大爆炸版石头剪刀布 题目描述 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,...

  • 玩转石头剪刀布

    你用肚子玩过石头剪刀布吗?你用膝盖玩过石头剪刀布吗?你用脚掌玩过石头剪刀布吗?你用舌头玩过石头剪刀布吗?你用眼睛玩...

  • 2020-05-27

    “石头剪刀布” 哈哈,你输了,再来再来 “石头剪刀布” 你又输了,怎么回事,再来再来 “石头剪刀布” 你有心事,说...

  • [米·记]2017.09.06.阴雨

    “石头剪刀布,石头剪刀布,左边剪刀右边石头,变成一只小蜗牛;左边是布右边是布,变成花蝴蝶……”——由磨蹭的米拉刷牙...

  • 《自卑与超越》读书笔记

    (一)面对失败 “石头、剪刀、布!石头、剪刀、布!石头、剪刀、布!” “我赢了!”游戏规则是,赢了的人可以前进一格...

  • 温暖的承诺:我帮蜗牛找朋友

    剪刀石头布 剪刀石头布 一把剪刀一块石头变成小白兔 一把剪刀两把剪刀亲亲小白兔 一块石头一块布抓住小白兔 一块布两...

  • 人机大战《石头剪刀布》你赢得过机器吗?

    人机大战《石头剪刀布》你赢得过机器吗? 《石头剪刀布》的游戏每个人都玩过,而你有没有玩过与机器对决《石头剪刀布》?...

  • 陪孩子玩游戏(4)

    “石头,剪刀,布,我出剪刀。” “石头,剪刀,布,我出剪刀。” “你这是剪刀吗?”孩子还不太会控制手指,只见他伸着...

  • 石头 剪刀 布

    “妈妈我们玩石头剪刀布吧!" “好的,来,石头剪刀布。” 我出了石头,豆丁出了剪刀。 “我赢了,你输了豆丁。” “...

网友评论

      本文标题:石头、剪刀、布的识别

      本文链接:https://www.haomeiwen.com/subject/eyrabdtx.html