打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
matchTemplate//minMaxLoc//rectangle//normalize
///图像单目标模板匹配
#include "opencv2/opencv.hpp"
using namespace cv;
#include <iostream>
using namespace std;
int main()
{
Mat srcImg = imread("F:\\数据集\\数字图像处理标准测试图\\LenaRGB.bmp", CV_LOAD_IMAGE_COLOR);
Mat tempImg = imread("F:\\数据集\\数字图像处理标准测试图\\testLena.bmp", CV_LOAD_IMAGE_COLOR);
cout << "Size of template: " << tempImg.size() << endl;
//1.构建结果图像resultImg(注意大小和类型)
//如果原图(待搜索图像)尺寸为W x H, 而模版尺寸为 w x h, 则结果图像尺寸一定是(W-w+1)x(H-h+1)
//结果图像必须为单通道32位浮点型图像
int width = srcImg.cols - tempImg.cols + 1;
int height = srcImg.rows - tempImg.rows + 1;
Mat resultImg(Size(width, height), CV_32FC1);
//2.模版匹配
matchTemplate(srcImg, tempImg, resultImg, CV_TM_CCOEFF_NORMED);
imshow("result", resultImg);
//3.正则化(归一化到0-1)
normalize(resultImg, resultImg, 0, 1, NORM_MINMAX, -1);
imshow("result1", resultImg);
//4.找出resultImg中的最大值及其位置
double minValue = 0;
double maxValue = 0;
Point minPosition;
Point maxPosition;
minMaxLoc(resultImg, &minValue, &maxValue, &minPosition, &maxPosition);
cout << "minValue: " << minValue << endl;
cout << "maxValue: " << maxValue << endl;
cout << "minPosition: " << minPosition << endl;
cout << "maxPosition: " << maxPosition << endl;
//5.根据resultImg中的最大值位置在源图上画出矩形
rectangle(srcImg, maxPosition, Point(maxPosition.x + tempImg.cols, maxPosition.y + tempImg.rows), Scalar(0, 255, 0), 1, 8);
//rectangle(srcImage,矩形框左上角坐标,矩形框右下角坐标,。。。。。)
imshow("srcImg", srcImg);
imshow("template", tempImg);
waitKey(0);
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python第三方模块opencv-python模版匹配图像识别简介
java实现的图片缩放 压缩 裁剪工具!找了很久,市面上再也找不到比它缩放效果还好的代码了的代码详情
存在一个数组,找出连续数之和最大的一段
哈尔小波变换的原理及其实现(Haar)
OpenCV-最值计算cv::minMaxIdx&cv::minMaxLoc
基于肤色高斯概率模型的人脸检测
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服