wojianxin

opencv 物体外形相似度匹配 cv.matchShapes函数使用

opencv中 cv.matchShapes() 可以检测两个形状之间的相似度,返回值越小,越相似。先读入下面这张图片:
实验用图
进行实验:

import numpy as np 
import cv2 as cv
img = cv.imread(\'shapes.jpg\', 0)
_, thresh = cv.threshold(img, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)

contours, hierarchy = cv.findContours(thresh, 3, 2)
img_color = cv.cvtColor(thresh, cv.COLOR_GRAY2BGR)  # 用于绘制的彩色图

cnt_a, cnt_b, cnt_c = contours[0], contours[1], contours[2]
cv.drawContours(img_color,[cnt_a],0,[255,0,0],2)
cv.drawContours(img_color,[cnt_b],0,[0,255,0],2)
cv.drawContours(img_color,[cnt_c],0,[0,0,255],2)

# 参数3:匹配方法;参数4:opencv预留参数
print(\'b,b = \',cv.matchShapes(cnt_b, cnt_b, 1, 0.0))  # 0.0
print(\'b,c = \',cv.matchShapes(cnt_b, cnt_c, 1, 0.0))  # 2.17e-05
print(\'b,a = \',cv.matchShapes(cnt_b, cnt_a, 1, 0.0))  # 0.418

cv.imshow(\'result\',img_color)
cv.waitKey(0)
cv.destroyAllWindows()

实验结果:
代码输出结果
可以看到,b和自己匹配,返回值最小,为0。b和c匹配返回的数值远小于b和a匹配的数值,表示c相对a来说,和b形状更相似。

分类:

技术点:

相关文章:

  • 2021-11-18
  • 2021-11-18
  • 2021-11-22
  • 2021-12-10
  • 2021-12-02
  • 2022-01-25
  • 2021-12-04
  • 2022-12-23
猜你喜欢
  • 2021-11-30
  • 2022-01-30
  • 2022-12-23
  • 2021-12-26
  • 2022-01-01
  • 2022-01-01
  • 2022-01-22
相关资源
相似解决方案