import cv2 import numpy as np # 读取目标图和两个样本图 target_img = cv2.imread('target.jpg') sample1_img = cv2.imread('sample1.jpg') sample2_img = cv2.imread('sample2.jpg') # 获取样本图的宽高 sample1_height, sample1_width, _ = sample1_img.shape sample2_height, sample2_width, _ = sample2_img.shape # 使用模板匹配函数找到样本图在目标图中的位置 res1 = cv2.matchTemplate(target_img, sample1_img, cv2.TM_CCOEFF_NORMED) res2 = cv2.matchTemplate(target_img, sample2_img, cv2.TM_CCOEFF_NORMED) # 设置匹配阈值 threshold = 0.8 # 在目标图中标出匹配的位置 loc1 = np.where(res1 >= threshold) for pt in zip(*loc1[::-1]): # 绘制矩形框 cv2.rectangle(target_img, pt, (pt[0] + sample1_width, pt[1] + sample1_height), (0, 0, 255), 2) # 输出坐标 print('Sample 1: ({}, {})'.format(pt[0], pt[1])) loc2 = np.where(res2 >= threshold) for pt in zip(*loc2[::-1]): # 绘制矩形框 cv2.rectangle(target_img, pt, (pt[0] + sample2_width, pt[1] + sample2_height), (0, 255, 0), 2) # 输出坐标 print('Sample 2: ({}, {})'.format(pt[0], pt[1])) # 显示结果图 cv2.imshow('Result', target_img) cv2.waitKey(0) cv2.destroyAllWindows()
时间: 2024-03-27 08:40:15 浏览: 49
这段代码是使用OpenCV库中的模板匹配函数来在目标图中寻找两个样本图的位置,并将匹配的位置用矩形框标出来。在代码中,对于每个找到的匹配位置,使用`print()`函数输出了样本图的左上角顶点坐标,即矩形框左上角的坐标。这些坐标可以通过以下代码段来提取:
```
print('Sample 1: ({}, {})'.format(pt[0], pt[1]))
```
其中,`pt[0]`表示矩形框左上角的x坐标值,`pt[1]`表示矩形框左上角的y坐标值。对于样本图2,也可以通过类似的方式来提取坐标。
阅读全文