Opencv Match Template(轮廓匹配)
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
Mat img1, img2, img3, img4,img_result, img_gray1, img_gray2, img_gray3, img_hsv1, img_hsv2, img_hsv3;
MatND img_hist1, img_hist2, img_hist3;
char win1[] = "window1";
char win2[] = "window2";
char win3[] = "window3";
char win4[] = "window4";
char win5[] = "window5";
int threshold_value = 0;
int max_value = 255;
RNG rng(12345);
int Demo_Match_Template();
string convertToString(double d);
void Demo_Match(int,void*);
int index = 0;
int match_threshold = 20;
int max_track = 255;
int match_method = CV_TM_SQDIFF;
//模板匹配
int Demo_Match_Template()
{
namedWindow(win1, CV_WINDOW_AUTOSIZE);
//namedWindow(win2, CV_WINDOW_AUTOSIZE);
namedWindow(win3, CV_WINDOW_AUTOSIZE);
img1 = imread("D://images//1//p5.jpg");
img2 = imread("D://images//1//p5_1.jpg");
if (img1.empty()||img2.empty())
{
cout << "could not load image..." << endl;
return 0;
}
//imshow(win1, img1);
createTrackbar("Trace bar", win1, &match_threshold, max_track, Demo_Match);
Demo_Match(0,0);
imshow(win1, img1);
return 0;
}
void Demo_Match(int, void*)
{
int width = img1.cols - img2.cols + 1;
int height = img1.rows - img2.rows + 1;
img3 = Mat(width,height,CV_32FC1);
matchTemplate(img1, img2, img3, match_method, Mat());
//归一化
normalize(img3, img3, 0, 1, NORM_MINMAX,-1,Mat());
Point minLoc;
Point maxLoc;
Point tempLoc;
double min, max;
minMaxLoc(img3, &min, &max, &minLoc, &maxLoc, Mat());
if (match_method==CV_TM_SQDIFF || match_method==CV_TM_SQDIFF_NORMED)
{
tempLoc = minLoc;
}
else
{
tempLoc = maxLoc;
}
img1.copyTo(img4);
//绘制矩形
rectangle(img4, Rect(tempLoc.x, tempLoc.y,img2.cols,img2.rows),Scalar(0,0,255),2,8);
//rectangle(img3, Rect(tempLoc.x, tempLoc.y, img2.cols, img2.rows), Scalar(0, 0, 255), 2, 8);
imshow(win2,img2);
imshow(win3,img4);
}
string convertToString(double d)
{
ostringstream os;
if (os << d)
{
return os.str();
}
return "Invalid conversion...";
}
int main()
{
Demo_Match_Template();
waitKey(0);
return 0;
}

Opencv Match Template(轮廓匹配)的更多相关文章
- 【OpenCV学习笔记】三十、轮廓特征属性及应用(七)—位置关系及轮廓匹配
http://blog.csdn.net/abc8730866/article/details/69219992 轮廓特征属性及应用(七)—位置关系及轮廓匹配 1.计算点与轮廓的距离及位置关系——po ...
- OpenCV应用(3) 简单轮廓匹配的小例子
具体应用 https://blog.csdn.net/kyjl888/article/details/85060883 OpenCV中提供了几个与轮廓相关的函数: findContours():从二值 ...
- EmguCV 轮廓匹配
一.相关类 MCvMoments inv_sqrt_m00 m00!=0?1/sqrt(m00):0 m00 spatial moments m01, m02, m03, m10, m11 m12, ...
- 使用Opencv中matchTemplate模板匹配方法跟踪移动目标
模板匹配是一种在图像中定位目标的方法,通过把输入图像在实际图像上逐像素点滑动,计算特征相似性,以此来判断当前滑块图像所在位置是目标图像的概率. 在Opencv中,模板匹配定义了6种相似性对比方式: C ...
- 使用Python+OpenCV进行图像模板匹配(Match Template)
2017年9月22日 BY 蓝鲸 LEAVE A COMMENT 本篇文章介绍使用Python和OpenCV对图像进行模板匹配和识别.模板匹配是在图像中寻找和识别模板的一种简单的方法.以下是具体的步骤 ...
- opencv学习之路(28)、轮廓查找与绘制(七)——位置关系及轮廓匹配
一.点与轮廓的距离及位置关系 #include "opencv2/opencv.hpp" #include <iostream> using namespace std ...
- OpenCV图像的轮廓的匹配
http://blog.sina.com.cn/s/blog_67a7426a0101cxl0.html 一个跟轮廓相关的最常用到的功能是匹配两个轮廓.如果有两个轮廓,如何比较它们;或者如何比较一个轮 ...
- opencv:轮廓匹配
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- 十一 模板匹配match template
一.介绍 1.模板匹配 通俗讲就是以图找图,通过图中的一部分来找它在图中的位置(模板匹配就是在整个图像区域发现与给定子图像匹配的小块区域). 模板匹配是一种最原始.最基本的模式识别方法,研究某一特定对 ...
随机推荐
- 解决openoffice进程异常退出的办法:
实现以守护进程,定时检测openoffice是否退出,如果进程不存在,通过脚本将openoffice起起来即可. 具体操作步骤: 第一步: 将openoffice.sh脚本放置在root目录下面, ...
- Zookeeper的shell操作
一.客户端连接服务器 zkCli.sh start 二.命令操作 进入到客户端操作行,键入help 查看zookeeper命令列表 常用命令 1) 查看节点列表:ls 路径 2) 创建节点:creat ...
- netstat 命令 与 ss 命令
http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html http://www.ttlsa.com/linux-command/ss-r ...
- 使用JDK合成照片
原图(工程所在目录7098849.jpg): 头像(工程所在目录20181023201750.jpg): 开始合成(执行如下main方法): public static void main(Strin ...
- Python——基础数据类型(补充)
1.基础数据类型汇总补充 (1)小数据池: 为了节省空间,数字和字符串有,其他的没有[了解] 数字:-5---256之间的数字共用一个内存地址 #(1)i1 = i2 id(i1) == id ...
- warning: backslash and newline separated by space [enabled by default]
警告:反斜杠和换行符之间多了空格. 这种问题出现在宏定义 #define,并且有多行,每行之间要用 “\” 连接起来. 解决办法:删除 “\” 后面的空格,直接紧跟回车.
- ubuntu 修改分辨率为自定义分辨率
在ubuntu14.04虚拟机上修改自定义大小的桌面屏幕分辨率,使用的命令:cvt,xrandr 0.首先查看下当前已经提供的分辨率设置:xrandr -q root@xxx:/home/xxx/De ...
- 北京师范大学第十六届程序设计竞赛决赛 F 汤圆防漏理论
链接:https://www.nowcoder.com/acm/contest/117/F来源:牛客网 汤圆防漏理论 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他 ...
- Window下MySql 5.6 安装后内存占用很高的问题
Window下MySql 5.6 安装后内存占用很高的问题 刚刚准备玩一把mysql,初学者 环境是window 7和window sever 2008, mysql是最新的5.6, 发现的问题是安装 ...
- http的短连接和长连接
首先http是无状态的,这个是一定的. 然后短连接和长连接本身和客户端请求没有关系. 1.短连接:客户端请求,服务器立刻响应,服务器响应后此次http请求立刻结束. 2.长连接:客户端请求,服务器可以 ...