具体应用

https://blog.csdn.net/kyjl888/article/details/85060883

OpenCV中提供了几个与轮廓相关的函数:

findContours():从二值图像中寻找轮廓
drawContours():绘制轮廓
matchShape():使用Hu矩进行轮廓匹配
下面是一个使用这些函数的小例子,测试图片为:

test3_c.jpg如下:

test4_c.jpg如下:

#include <opencv2/opencv.hpp>
#include <iostream> using namespace cv;
using namespace std; int main() {
string path1 = "images/test3_c.jpg";
string path2 = "images/test4_c.jpg"; Mat image1 = imread(path1, IMREAD_GRAYSCALE);
Mat image2 = imread(path2, IMREAD_GRAYSCALE);
image1 = 255 - image1; // 反色
image2 = 255 - image2; imshow("1", image1); // 显示反色后的图像
imshow("2", image2); Mat image1_copy = imread(path1);
Mat image2_copy = imread(path2); // CV_RETR_EXTERNAL 检测外轮廓
vector<vector<Point>> contours1, contours2;
findContours(image1, contours1, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
findContours(image2, contours2, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); drawContours(image1_copy, contours1, -1, Scalar(0, 255, 0), 2, 8);
drawContours(image2_copy, contours2, -1, Scalar(0, 255, 0), 2, 8); imshow("轮廓1", image1_copy);
imshow("轮廓2", image2_copy); //返回轮廓之间的匹配度, rate越小越相似
double rate = matchShapes(contours1[0], contours2[0], CV_CONTOURS_MATCH_I1, 0);
cout << rate << endl; waitKey(0);
return 0;
}

  

OpenCV应用(3) 简单轮廓匹配的小例子的更多相关文章

  1. 2、Lucene 最简单的使用(小例子)

    在了解了Lucene以后,我打算亲手来做一个Lucene的小例子,这个例子只是Lucene最简单的应用:使用Lucene实现标准的英文搜索: 1.下载Lucene 下载Lucene,到Lucene的官 ...

  2. python3+opencv+tkinter开发简单的人脸识别小程序

    学校里有门图像处理的课程最终需要提交一个图像处理系统, 正好之前对于opencv有些了解,就简单的写一个人脸识别小程序吧 效果图如下 笔者IDE使用Pycharm,GUI编程直接使用内置的tkinte ...

  3. 【OpenCV学习笔记】三十、轮廓特征属性及应用(七)—位置关系及轮廓匹配

    http://blog.csdn.net/abc8730866/article/details/69219992 轮廓特征属性及应用(七)—位置关系及轮廓匹配 1.计算点与轮廓的距离及位置关系——po ...

  4. opecv轮廓匹配,可以用于去噪

    一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮廓和另一个抽象模板. 矩 比较两个轮廓最简洁的方式是比较他们的轮廓矩.这里先简短介绍一个矩的含义.简单的说 ...

  5. EmguCV 轮廓匹配

    一.相关类 MCvMoments inv_sqrt_m00 m00!=0?1/sqrt(m00):0 m00  spatial moments m01, m02, m03, m10, m11 m12, ...

  6. php+jquery+ajax+json简单小例子

    直接贴代码: <html> <title>php+jquery+ajax+json简单小例子</title> <?php header("Conte ...

  7. OpenCV 学习笔记(模板匹配)

    OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够 ...

  8. OpenCV函数:提取轮廓相关函数使用方法

    opencv中提供findContours()函数来寻找图像中物体的轮廓,并结合drawContours()函数将找到的轮廓绘制出.首先看一下findContours(),opencv中提供了两种定义 ...

  9. ASP.NET Cookie对象到底是毛啊?(简单小例子)

    记得刚接触asp.net的时候,就被几个概念搞的头痛不已,比如Request,Response,Session和Cookie.然后还各种在搜索引擎搜,各种问同事的,但是结果就是自己还是很懵的节奏. 那 ...

随机推荐

  1. 利用TCHART做分离饼形图

    https://www.cnblogs.com/gaodu2003/archive/2009/06/18/1505720.html unit Unit1; interface ……type  TFor ...

  2. yum 删除了,如何重新导入

    说明:准备研究docker时遇到的问题,提示如下: [root@localhost116 yum-package]# rpm -ivh yum--.el6.centos.noarch.rpm warn ...

  3. webbrowser实现一个进程一个代理的办法

    public static void RefreshIESettings(string strProxy) { const int INTERNET_OPTION_PROXY = 38; const ...

  4. 解决Linq Join Group by 时报错:Nullable object must have a value.

    Linq Join Group by 时报Nullable object must have a value. 例如: from s in subject on ch.SubId equals s.S ...

  5. spring Boot 学习(六、Spring Boot与分布式)

    一.分布式应用在分布式系统中,国内常用zookeeper+dubbo组合,而Spring Boot推荐使用 全栈的Spring,Spring Boot+Spring Cloud 分布式系统: 单一应用 ...

  6. JqGrid参考实例

    <div class="gridtable mt5"> <table id="tbList"></table> <di ...

  7. DEVexpress GridControl 属性设置

    1. 如何解决单击记录整行选中的问题 View->OptionsBehavior->EditorShowMode 设置为:Click 2. 如何新增一条记录 (1).gridView.Ad ...

  8. WPF解决WindowsFormsHost背景透明

    项目案例:WPF使用WindowsFormsHost播放视频,视频上显示边框.字幕等特效: 难点问题 1.WindowsFormsHost不支持背景透明: 2.WPF Panel.ZIndex无效,W ...

  9. Typora使用手册

    块状元素: 标题: # 标题1 ## 标题2 ### 标题3 #### 标题4 ##### 标题5 ###### 标题6 使用快捷键: Ctrl + 1-6 块引用 使用符号 > 就可以进入引用 ...

  10. Django的安全攻击

    目录 Django的安全攻击 XSS XSS(跨站脚本攻击) 危害 原理 防护 csrf(Cross Site Request Forgery) csrf(跨站域请求伪造) 过程 Django 提供的 ...