opencv 单目标模板匹配(只适用于模板与目标尺度相同)
2024-09-07 13:39:40
#include <iostream>
#include "opencv/cv.h"
#include "opencv/cxcore.h"
#include "opencv/highgui.h"
using namespace std; #pragma comment ( lib,"opencv_highgui244.lib" )
#pragma comment ( lib,"opencv_core244.lib" )
#pragma comment ( lib,"opencv_imgproc244.lib" ) int main()
{
IplImage *src = cvLoadImage("src.jpg", 0);
IplImage *srcResult = cvLoadImage("src.jpg", 3); //用来显示
IplImage *templat = cvLoadImage("template1.png", 0);
IplImage *result;
if(!src || !templat)
{
cout << "打开图像失败"<< endl;
return 0;
}
int srcW, srcH, templatW, templatH, resultH, resultW;
srcW = src->width;
srcH = src->height;
templatW = templat->width;
templatH = templat->height;
if(srcW < templatW || srcH < templatH)
{
cout <<"原图不能比模板小" << endl;
return 0;
}
resultW = srcW - templatW + 1;
resultH = srcH - templatH + 1;
result = cvCreateImage(cvSize(resultW, resultH), 32, 1); //the 3rd parameter
cvMatchTemplate(src, templat, result, CV_TM_SQDIFF);
double minValue, maxValue;
CvPoint minLoc, maxLoc;
cvMinMaxLoc(result, &minValue, &maxValue, &minLoc, &maxLoc);
cvRectangle(srcResult, minLoc, cvPoint(minLoc.x + templatW, minLoc.y+ templatH), cvScalar(0,0,255));
cvNamedWindow("srcResult", 0);
cvNamedWindow("templat", 0);
cvShowImage("srcResult", srcResult);
cvShowImage("templat", templat);
cvWaitKey(0);
cvReleaseImage(&result);
cvReleaseImage(&templat);
cvReleaseImage(&srcResult);
cvReleaseImage(&src);
return 0;
}
最新文章
- ASP.NET MVC - 创建Internet 应用程序
- 用Storm轻松实时大数据分析【翻译】
- LaTeX手动安装宏包(package)以及生成帮助文档的整套流程
- oracle 序列介绍
- xpath技术解析xml以及案例模拟用户登录效果
- JDK 和 OpenJDK 的区别
- Ubuntu 14.04 安装 sysrepo v0.7.5
- Codeforces 863 简要题解
- nginx 403 forbidden
- 彻底卸载Windows 10中OneDrive
- LED音乐频谱之输入数据处理
- 在eclipse中查看android源代码
- Ipad也怕冷?!
- 福大软工1816:Beta(4/7)
- Flex入门(一)——基本理论
- PHP-php.ini中文版
- try-with-resources语句
- python greenlet背景介绍与实现机制
- Spring mvc服务端消息推送(SSE技术)
- Copy拷贝