目标模板匹配

#include "highgui.h"
#include "cv.h"
#include "cxcore.h"


int main(int argc, char* argv[])
{
	IplImage* src, *templat, *result,*show;

	src = cvLoadImage("./images/src.jpg");
	show = cvLoadImage("./images/src.jpg");
	templat = cvLoadImage("./images/templat.jpg");

	int srcH, srcW, temH, temW, resultH, resultW;

	srcH = src->width;
	srcW = src->width;
	temH = templat->height;
	temW = templat->width;

	resultW = srcW - temW + 1;
	resultH = srcH - temW + 1;

	result = cvCreateImage(cvSize(resultW, resultH), 32, 1);
	cvMatchTemplate(src,templat,result,CV_TM_SQDIFF); 
	// 目标匹配函数,第一个参数是待搜素图像,第二个参数是模板图像,第三个参数是存放结果,第四个参数是匹配程度的方法,
    // 关于匹配的方法,使用不同的方法产生的结果的意义可能不太一样,有些返回的值越大表示匹配程度越好,有些相反。
	double minVal, maxVal;
	CvPoint minLoc, maxLoc;
	cvMinMaxLoc(result, &minVal, &maxVal, &minLoc, &maxLoc);  // 将最小值最大值的坐标填充到这个坐标里边去,
	cvRectangle(show, minLoc, cvPoint(minLoc.x + temW, minLoc.y + temH), CV_RGB(0, 255, 0));
	cvNamedWindow("show");
	cvShowImage("show", show);
	cvWaitKey(0);

	cvReleaseImage(&show);
	cvDestroyWindow("show");
	
	return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用OpenCV中的多目标模板匹配来实现这个功能。多目标模板匹配是一种在图像中同时匹配多个目标的技术。下面是一个简单的示例代码,展示了如何使用多目标模板匹配: ```python import cv2 import numpy as np # 加载目标图像和模板图像 target_image = cv2.imread('target_image.jpg') template_image = cv2.imread('template_image.jpg') # 获取目标图像和模板图像的宽度和高度 target_height, target_width = target_image.shape[:2] template_height, template_width = template_image.shape[:2] # 使用多目标模板匹配算法进行匹配 result = cv2.matchTemplate(target_image, template_image, cv2.TM_CCOEFF_NORMED) # 设置匹配阈值 threshold = 0.8 # 找到所有匹配的位置 locations = np.where(result >= threshold) # 在目标图像中绘制矩形框标记匹配的位置 for point in zip(*locations[::-1]): cv2.rectangle(target_image, point, (point[0] + template_width, point[1] + template_height), (0, 255, 0), 2) # 显示结果 cv2.imshow('Result', target_image) cv2.waitKey(0) cv2.destroyAllWindows() ``` 在上述代码中,我们首先加载目标图像和模板图像,然后使用`cv2.matchTemplate()`函数进行多目标模板匹配。然后,我们设置一个匹配阈值,将匹配得分高于阈值的位置作为匹配的结果。最后,我们在目标图像中绘制矩形框来标记匹配的位置。 你只需将目标图像和模板图像替换为你自己的图像,并根据需要调整阈值即可。希望这能帮到你!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值