如何利用python的opencv同时导入两张样本图,并在目标图中识别并分别给出坐标
时间: 2024-03-27 07:39:53 浏览: 83
在Python中通过OpenCV自己训练分类器进行特定物体实时识别.pdf
5星 · 资源好评率100%
可以使用以下步骤来实现:
1. 导入所需的库:
```python
import cv2
import numpy as np
```
2. 加载目标图和两个样本图:
```python
# 加载目标图
img_target = cv2.imread("target.jpg")
# 加载两个样本图
img_sample1 = cv2.imread("sample1.jpg")
img_sample2 = cv2.imread("sample2.jpg")
```
3. 将样本图转换成灰度图:
```python
gray1 = cv2.cvtColor(img_sample1, cv2.COLOR_BGR2GRAY)
gray2 = cv2.cvtColor(img_sample2, cv2.COLOR_BGR2GRAY)
```
4. 使用模板匹配在目标图中查找样本图的位置:
```python
# 使用 TM_CCOEFF_NORMED 方法进行模板匹配
res1 = cv2.matchTemplate(img_target, gray1, cv2.TM_CCOEFF_NORMED)
res2 = cv2.matchTemplate(img_target, gray2, cv2.TM_CCOEFF_NORMED)
# 设置匹配的阈值
threshold = 0.8
# 使用 where 函数查找匹配位置
loc1 = np.where(res1 >= threshold)
loc2 = np.where(res2 >= threshold)
```
5. 在目标图中标出匹配的位置:
```python
# 遍历匹配位置,并在目标图中标出矩形
for pt in zip(*loc1[::-1]):
cv2.rectangle(img_target, pt, (pt[0] + img_sample1.shape[1], pt[1] + img_sample1.shape[0]), (0, 0, 255), 2)
for pt in zip(*loc2[::-1]):
cv2.rectangle(img_target, pt, (pt[0] + img_sample2.shape[1], pt[1] + img_sample2.shape[0]), (0, 255, 0), 2)
```
6. 显示标记后的目标图:
```python
cv2.imshow("Result", img_target)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这样就可以同时导入两张样本图,并在目标图中识别并分别给出坐标了。
阅读全文