在使用 OpenCV 进行模板匹配时,您可能会遇到以下错误:

Traceback (most recent call last):
  File 'E:/Python Practice/图像识别.py', line 16, in <module>
    image_with_matching_result = image_matching(image, template)
  File 'E:/Python Practice/图像识别.py', line 5, in image_matching
    result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)
cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\templmatch.cpp:588: error: (-215:Assertion failed) corr.rows <= img.rows + templ.rows - 1 && corr.cols <= img.cols + templ.cols - 1 in function 'cv::crossCorr'

这个错误通常是由于图像和模板的尺寸不匹配导致的。

错误原因

OpenCV 的 cv2.matchTemplate() 函数使用交叉相关性来比较图像和模板。交叉相关性的结果是一个与模板大小相关的矩阵,该矩阵的大小为 (img.rows + templ.rows - 1, img.cols + templ.cols - 1)。如果结果矩阵的大小大于目标图像,就会发生断言失败。

解决方法

确保您的图像和模板的尺寸满足以下要求:

  • 结果图像的行数小于等于原始图像的行数加模板的行数减1。
  • 结果图像的列数小于等于原始图像的列数加模板的列数减1。

检查图像和模板尺寸

您可以使用以下代码检查图像和模板的尺寸:

import cv2

# 加载图像和模板
image = cv2.imread('image.jpg')
template = cv2.imread('template.jpg')

# 检查尺寸
print('图像尺寸:', image.shape)
print('模板尺寸:', template.shape)

调试建议

如果问题仍然存在,请提供以下信息,以便我能够更好地帮助您:

  • 完整的代码
  • 图像和模板的路径
  • 任何相关错误消息
  • 您使用的 OpenCV 版本

通过提供这些信息,我可以更好地理解您的代码,并帮助您解决问题。

OpenCV 错误: cv2.error: (-215:Assertion failed) corr.rows <= img.rows + templ.rows - 1 && corr.cols <= img.cols + templ.cols - 1 in function 'cv::crossCorr'

原文地址: https://www.cveoy.top/t/topic/cH9e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录