opencv--模板匹配

 1 #include "stdafx.h"
 2 #include <windows.h>
 3 #include <baseapi.h>
 4 #include <opencv2\opencv.hpp>
 5
 6 using namespace cv;
 7 using namespace std;
 8 #pragma  comment(lib,"libtesseract302d.lib")
 9
10 int main()
11 {
12     IplImage *src = cvLoadImage("C:\\Users\\Bite07\\Desktop\\1.jpg", 0);
13     IplImage *srcResult = cvLoadImage("C:\\Users\\Bite07\\Desktop\\1.jpg", 3);  //用来显示
14     IplImage *templat = cvLoadImage("C:\\Users\\Bite07\\Desktop\\4.jpg", 0);
15     IplImage *result;  // 用来存放结果
16
17     if(!src || !templat)
18     {
19         cout << "打开图像失败"<< endl;
20         return 0;
21     }
22     int srcW, srcH, templatW, templatH, resultH, resultW;
23     srcW = src->width;
24     srcH = src->height;
25     templatW = templat->width;
26     templatH = templat->height;
27     if(srcW < templatW || srcH < templatH)
28     {
29         cout <<"模板不能比原图像大" << endl;
30         return 0;
31     }
32     resultW = srcW - templatW + 1;
33     resultH = srcH - templatH + 1;
34     result = cvCreateImage(cvSize(resultW, resultH), 32, 1);
35
36     cvMatchTemplate(src, templat, result, CV_TM_SQDIFF);
37     double minValue, maxValue;
38     CvPoint minLoc, maxLoc;
39
40     cvMinMaxLoc(result, &minValue, &maxValue, &minLoc, &maxLoc);
41     cvRectangle(srcResult, minLoc, cvPoint(minLoc.x + templatW, minLoc.y+ templatH), cvScalar(0,0,255));
42
43     cvNamedWindow("srcResult", 0);
44     cvNamedWindow("templat", 0);
45     cvShowImage("srcResult", srcResult);
46     cvShowImage("templat", templat);
47     cvWaitKey(0);
48     cvReleaseImage(&result);
49     cvReleaseImage(&templat);
50     cvReleaseImage(&srcResult);
51     cvReleaseImage(&src);
52     return 0;
53 }  

参考至:http://blog.csdn.net/lu597203933/article/details/14548523

时间: 2024-11-09 06:33:09

opencv--模板匹配的相关文章

opencv 模板匹配,在图像中寻找物体

使用模板匹配在图像中寻找物体 模板匹配 模板匹配就是用来在大图中找小图,也就是说在一副图像中寻找另外一张模板图像的位置: opencv中用 cv.matchTemplate() 实现模板匹配. 模板匹配的原理其实很简单,就是不断地在原图中移动模板图像去比较,有6种不同的比较方法,详情可参考:TemplateMatchModes 1. 平方差匹配CV_TM_SQDIFF:用两者的平方差来匹配,最好的匹配值为0 2. 归一化平方差匹配CV_TM_SQDIFF_NORMED 3. 相关匹配CV_TM_

opencv模板匹配查找图像(python)

#!/usr/bin/env python3 # -*- coding: utf-8 -*- import cv2 import numpy as np from cv2 import COLOR_BGR2GRAY def main(): # 读取原图 img_rgb = cv2.imread("d:/img-src.png") # 转为灰度图 img_gray = cv2.cvtColor(img_rgb, COLOR_BGR2GRAY) # 读取模版图 template = cv2

opencv学习之路(21)、模板匹配及应用

一.模板匹配概念 二.单模板匹配 1 #include "opencv2/opencv.hpp" 2 #include <iostream> 3 using namespace std; 4 using namespace cv; 5 6 void main() 7 { 8 Mat temp=imread("E://mu.jpg"); 9 Mat src=imread("E://lena.jpg"); 10 Mat dst=src.c

OpenCV 学习笔记(模板匹配)

OpenCV 学习笔记(模板匹配) 模板匹配是在一幅图像中寻找一个特定目标的方法之一.这种方法的原理非常简单,遍历图像中的每一个可能的位置,比较各处与模板是否"相似",当相似度足够高时,就认为找到了我们的目标. 在 OpenCV 中,提供了相应的函数完成这个操作. matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置 在具体介绍这两个函数之前呢,我们还要介绍一个概念,就是如何来评价两

opencv笔记(二十二)——模板匹配 template matching

模板匹配就是在给定一幅图像和一幅模板(一般模板比图像的尺寸小很多)的情况下,找到这个图像中最最相似于模板的位置,比如 第一幅是给定的图片,第二幅是模板,第三幅就是搜索到的匹配的位置. 这个搜索的过程,我没有在源码中求索,但是根据tutorial,应该是采用sliding window的方法,利用滑动的窗口,逐像素进行匹配.这个逐像素的意思,就是锚定某个像素之后,在这个像素的右边和下方,以template的宽度和高度的距离的范围内,进行模板与图像的相似度计算. 这种方法和行人检测中常用的方法类似.

使用OpenCV&amp;&amp;C++进行模板匹配

一:课程介绍 1.1:学习目标 学会用imread载入图像,和imshow输出图像. 用nameWindow创建窗口,用createTrackbar加入滚动条和其回调函数的写法. 熟悉OpenCV函数matchTemplate并学会通过该函数实现模板匹配. 1.2:什么是模板匹配? 在一副图像中寻找和另一幅图像最相似(匹配)部分的技术. 二:实验原理 让模板图片在原图片上的一次次滑动(从左到右,从上到下一个像素为单位的移动),然后将两张图片的像素值进行比对,然后选择相似度最高的部分进行标记,当遇

OpenCV探索之路(九):模板匹配

模板匹配的作用在图像识别领域作用可大了.那什么是模板匹配? 模板匹配,就是在一幅图像中寻找另一幅模板图像最匹配(也就是最相似)的部分的技术. 说的有点抽象,下面给个例子说明就很明白了. 在上面这幅全明星照中,我们想找出姚明头像的位置,并把它标记出来,可以做到吗? 可以,这就是模板匹配的要做的事情. 其实模板匹配实现的思想也是很简单很暴力的,就是拿着模板图片(姚明头像)在原图(全明星照)中从左上至右下依次滑动,直到遇到某个区域的相似度低于我们设定的阈值,那么我们就认为该区域与模板匹配了,也就是我们

OpenCV学习笔记[4]模板匹配 Java version

OpenCV学习笔记:模板匹配 Java version 首先我要纠正一个错误的学习习惯,像OpenCV这样的大型库,按照官方教程一步一步调试的学习效率太低了,OpenCV就像字典一样,当我们需要计算机进行某些视觉特性模拟时,针对具体问题去检索库中对应的API即可. 尽管官方教程非常详细,但除了人脸识别的Demo和一套doc外,没有其他Java实例,教程中详细的实例都由C语言编写,我在测试的过程中会将对应部分按照OOP形式重写为Java模块,并在学习笔记中贴出. 官方教程可以在OpenCV库解压

OpenCV中的模板匹配方法及其应用

模板匹配(TemplateMatching)就是在一幅图像中寻找和模板图像(template)最相似的区域,该方法原理简单计算速度快,能够应用于目标识别,目标跟踪等多个领域.OpenCV中对应的函数为matchTemplate或cvMatchTemplate(参考opencvdoc),简单介绍下: 1.函数原型 C++: void matchTemplate(InputArray image, InputArray templ, OutputArray result, int method);

Python+OpenCV图像处理之模板匹配

模板匹配就是在整个图像区域中发现与给定子图像匹配的小块区域 在OpenCV中,提供了相应的函数完成这个操作: matchTemplate 函数:在模板和输入图像之间寻找匹配,获得匹配结果图像 minMaxLoc 函数:在给定的矩阵中寻找最大和最小值,并给出它们的位置 几种常见的模板匹配算法: ①TM_SQDIFF是平方差匹配:TM_SQDIFF_NORMED是标准平方差匹配.利用平方差来进行匹配,最好匹配为0.匹配越差,匹配值越大. ②TM_CCORR是相关性匹配:TM_CCORR_NORMED