zoukankan      html  css  js  c++  java
  • 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形状更相似。

  • 相关阅读:
    超多sql分步骤类型题解
    sql 高级函数
    sql 每天下单的老客数量
    sql
    面试-JAVA常见回答
    查询员工的累计薪水
    背包问题模板
    动态规划理解合集
    SQL语句统计每天、每月、每年的 数据
    机考刷机-树相关
  • 原文地址:https://www.cnblogs.com/wojianxin/p/12605552.html
Copyright © 2011-2022 走看看