石头、剪刀、布的识别

2023-10-15  本文已影响0人  大龙10

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


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

二、程序实现


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()

运行结果
上一篇 下一篇

猜你喜欢

热点阅读