如何利用python的opencv同时导入两张样本图,并在目标图中识别出样本图并分别给出坐标
时间: 2024-03-27 21:40:07 浏览: 9
可以使用Python的OpenCV库提供的模板匹配(Template Matching)函数`cv2.matchTemplate()`来实现。
以下是一个示例代码,其中我们将使用两个样本图`sample1.jpg`和`sample2.jpg`,并在目标图`target.jpg`中找到它们的位置:
```python
import cv2
# 读取目标图和两个样本图
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)
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)
# 显示结果图
cv2.imshow('Result', target_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上述代码中,我们首先读取了目标图和两个样本图,然后使用模板匹配函数`cv2.matchTemplate()`在目标图中找到样本图的位置。接着,我们设置了匹配阈值,并使用`np.where()`函数找到匹配的位置。最后,我们在匹配位置上绘制矩形框,并将结果显示出来。
需要注意的是,模板匹配函数`cv2.matchTemplate()`在处理图像时是按照灰度图像处理的,因此我们需要在读入图像时将其转为灰度图像,或者在使用模板匹配函数之前,先将彩色图像转为灰度图像。