Python cv 读取两张jpg照片,一张目标,一张拍摄图,编写寻找目标的功能,给出示例代码,
时间: 2023-06-19 17:06:49 浏览: 71
好的,没问题,我可以帮您解答这个问题。
基于您的问题,我假设您想使用 Python 中的 OpenCV 库来读取两张 JPG 格式的图片(即目标图片和拍摄图片),并从拍摄图片中找到目标图片的位置,对吗?
在这种情况下,您可以尝试使用模板匹配的方法来寻找目标图片。基本思想是:将目标图片与拍摄图片进行比较,如果两幅图像的局部图像相似,那么它们就有可能对应同一个物体。
以下是示例代码:
```python
import cv2
# 加载目标图片和拍摄图片
target_img = cv2.imread('target.jpg')
shoot_img = cv2.imread('shoot.jpg')
# 将目标图片和拍摄图片转化为灰度图像
target_gray = cv2.cvtColor(target_img, cv2.COLOR_BGR2GRAY)
shoot_gray = cv2.cvtColor(shoot_img, cv2.COLOR_BGR2GRAY)
# 获取目标图片的长宽
target_height, target_width = target_gray.shape[:2]
# 使用模板匹配寻找目标图片的位置
res = cv2.matchTemplate(shoot_gray, target_gray, cv2.TM_CCOEFF_NORMED)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
# 打印目标图片的位置
print("目标图片的位置:", max_loc)
# 在拍摄图片中标记出目标图片的位置
top_left = max_loc
bottom_right = (top_left[0] + target_width, top_left[1] + target_height)
cv2.rectangle(shoot_img, top_left, bottom_right, (0, 0, 255), 2)
# 显示拍摄图片
cv2.imshow('detected', shoot_img)
cv2.waitKey(0)
```
其中,我们用 `cv2.imread` 函数分别读取目标图片和拍摄图片,并将它们转化为了灰度图像(因为模板匹配只能用于灰度图像)。
使用 `cv2.matchTemplate` 函数执行模板匹配操作,找到目标图案在拍摄图片中的位置。
然后,我们在拍摄图片中标记出目标图案的位置,并使用 `cv2.imshow` 函数将结果显示出来。
以上是示例代码,您可以根据自己的需求进行修改和调整。
阅读全文