当前位置: 首页 > news >正文

OpenCV结构分析与形状描述符(18)比较两个轮廓相似度的函数matchShapes()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

比较两个形状。

该函数用于比较两个形状。所有三个实现的方法都使用了 Hu 不变矩(参见 HuMoments)

函数原型

double cv::matchShapes
(InputArray 	contour1,InputArray 	contour2,int 	method,double 	parameter 
)		

参数

  • 参数contour1 第一个轮廓或灰度图像。
  • 参数contour2 第二个轮廓或灰度图像。
  • 参数method 比较方法,参见 ShapeMatchModes。
  • 参数parameter 方法特定的参数(目前不支持)。

返回值

返回一个表示两个形状相似度的双精度浮点数。数值越小,表示两个形状越相似。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>int main()
{// 定义两个矩形的顶点std::vector< cv::Point > contour1 = { cv::Point( 0, 0 ), cv::Point( 2, 0 ), cv::Point( 2, 2 ), cv::Point( 0, 2 ) };std::vector< cv::Point > contour2 = { cv::Point( 1, 1 ), cv::Point( 3, 1 ), cv::Point( 3, 3 ), cv::Point( 1, 3 ) };// 计算两个轮廓的相似度double similarity = cv::matchShapes( contour1, contour2, cv::CONTOURS_MATCH_I1, 0.0 );std::cout << "Similarity between contours: " << similarity << std::endl;return 0;
}

运行结果

Similarity between contours: 6.66134e-16

得到的结果 6.66134e-16 是一个非常小的数值,接近于零。这意味着根据 cv::matchShapes 函数的计算,两个轮廓之间的相似度非常高,几乎完全相同。在数值计算中,如此小的数值通常表示两个对象之间几乎没有差异。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 数据结构应用实例(二)——K均值聚类
  • 小型洗衣机什么牌子好又便宜?五款备受好评机型测评,闭眼入
  • 小米红米系列机型 机型代码查询总目录 adb指令查询步骤
  • vs2019成功连接数据库mysql
  • 深度学习算法在图算法中的应用(图卷积网络GCN和图自编码器GAE)
  • lxml官方入门教程(The lxml.etree Tutorial)翻译
  • 微波无源器件 4 基于高阶定向耦合器的双极化波束形成网络
  • MySQL系列—10.Innodb行格式
  • Google Test(gtest)中 Mocks
  • Redis重要知识点:哨兵是什么?哨兵如何选择Redis主服务器
  • Java-idea小锤子图标
  • Excel数据清洗工具:提高数据处理效率的利器
  • 好事多磨,长电科技2024上半年营收净利为何逆势双大涨
  • Python Opencv鼠标回调
  • error C2275: 将此类型用作表达式非法-解决方案
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【译】理解JavaScript:new 关键字
  • CSS相对定位
  • DataBase in Android
  • Django 博客开发教程 16 - 统计文章阅读量
  • ES6 学习笔记(一)let,const和解构赋值
  • github指令
  • JavaScript的使用你知道几种?(上)
  • mysql innodb 索引使用指南
  • Redis 中的布隆过滤器
  • Redis学习笔记 - pipline(流水线、管道)
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Yii源码解读-服务定位器(Service Locator)
  • 给Prometheus造假数据的方法
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 前端之React实战:创建跨平台的项目架构
  • 【运维趟坑回忆录】vpc迁移 - 吃螃蟹之路
  • 阿里云服务器购买完整流程
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • $LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
  • %@ page import=%的用法
  • (2)空速传感器
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (26)4.7 字符函数和字符串函数
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (十二)Flink Table API
  • (译)2019年前端性能优化清单 — 下篇
  • (转)http-server应用
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ***linux下安装xampp,XAMPP目录结构(阿里云安装xampp)
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 调用php,php 调用.net com组件 --
  • .NET编程C#线程之旅:十种开启线程的方式以及各自使用场景和优缺点