形状匹配

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

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


一、形状匹配

二、语法格式

三、匹配度计算


import cv2

# --------------读取并绘制原始图像------------------
o1 =  cv2.imread('d:\\c1.jpg')  
o2 =  cv2.imread('d:\\c2.jpg')  
o3 =  cv2.imread('d:\\cc.jpg')  

# --------------提取轮廓------------------
gray1 = cv2.cvtColor(o1,cv2.COLOR_BGR2GRAY)  
gray2 = cv2.cvtColor(o2,cv2.COLOR_BGR2GRAY)  
gray3 = cv2.cvtColor(o3,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)  

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)  

cnt1=contours1[0]
cnt2=contours2[0]
cnt3=contours3[0]
ret0=cv2.matchShapes(cnt1,cnt1,1,0.0)
ret1=cv2.matchShapes(cnt1,cnt2,1,0.0)
ret2=cv2.matchShapes(cnt1,cnt3,1,0.0)

print("o1.shape=",o1.shape)
print("o2.shape=",o2.shape)
print("o3.shape=",o3.shape)
print("相似图像(cnt1,cnt1)的matchShape=",ret0)
print("相似图像(cnt1,cnt2)的matchShape=",ret1)
print("不相似图像(cnt1,cnt3)的matchShape=",ret2)

cv2.imshow('o1',o1)
cv2.imshow('o2',o2)
cv2.imshow('o3',o3)
cv2.waitKey()
cv2.destroyAllWindows()

运行结果
输出数据

四、结果分析

【注意】除使用形状匹配外,还可以通过Hu矩来判断两个对象的一致性。但是Hu矩不如函数cv2.matchShapes()直观。

上一篇 下一篇

猜你喜欢

热点阅读