OpenCV识别小图片在大图片中的位置

要使用OpenCV识别小图片在大图片中的位置,可以使用模板匹配技术。

模板匹配是一种在图像中寻找指定模板的方法,它可以用于定位目标物体(小图片)在场景中(大图片)的位置。

下面是使用OpenCV进行模板匹配的步骤:

  1. 加载大图片和小图片,并将它们转换为灰度图像。

  2. 使用cv2.matchTemplate()函数在大图片中寻找小图片的匹配。此函数会返回一张匹配图像,其中每个像素都表示相应位置的匹配程度。

  3. 使用cv2.minMaxLoc()函数找到匹配程度最高的像素位置。这个位置就是小图片在大图片中的位置。

代码示例:

import cv2

# 加载大图片和小图片(灰度图)
img = cv2.imread("big_image.jpg")
template = cv2.imread("small_image.jpg", 0)

# 取得小图片的宽度和高度
w, h = template.shape[::-1]

# 进行模板匹配
res = cv2.matchTemplate(img,template,cv2.TM_CCOEFF_NORMED)

# 找到最高匹配程度的像素位置
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)

# 绘制匹配结果
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)
cv2.rectangle(img,top_left, bottom_right, (0,0,255), 2)

# 显示结果
cv2.imshow("Result", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

注意:此示例假设小图片只出现一次在大图片中。如果小图片出现多次,可以使用cv2.minMaxLoc()函数的另一个参数来找到所有匹配的位置。

Leave a Comment

豫ICP备19001387号-1