gpt4 book ai didi

python - 如何修复函数 'cv::matchTemplate'

转载 作者:太空宇宙 更新时间:2023-11-03 20:11:50 24 4
gpt4 key购买 nike

我想将验证码字符作为一个字符串读取。

这是我想阅读的图像示例:

! https://ibb.co/t2h3SS5

我正在使用的代码:

    match = cv2.matchTemplate(img_symbol, image, cv2.TM_CCOEFF_NORMED)
if len(match):
_, quality, _, location = cv2.minMaxLoc(match)
if quality > 0.8:
result.append({'x': location[0], 'symbol': ntpath.basename(symbol).replace('.png', '')})
result = sorted(result, key=lambda k: k['x'])
return ''.join([x['symbol'] for x in result])

我遇到了这个错误:

<小时/>

错误回溯(最近一次调用最后一次) 在 37 38 表示 IMAGES 中的 img:---> 39 print('{} -> {}'.format(img,guess_captcha(img)))

在guess_captcha(图片)中 27 img_symbol = cv2.imread(符号) 28---> 29 匹配 = cv2.matchTemplate(img_symbol, image, cv2.TM_CCOEFF_NORMED) 30 如果长度(匹配): 31 _、质量、_、位置 = cv2.minMaxLoc(match)

错误:OpenCV(4.1.2) ..\modules\imgproc\src\templmatch.cpp:1104: 错误:(-215:断言失败) (深度 == CV_8U || 深度 == CV_32F) && 类型 = = _templ.type() && _img.dims() <= 2 in 函数 'cv::matchTemplate'

最佳答案

OpenCV 的错误消息可能有点神秘。以下是错误消息各部分的含义:

  • depth == CV_8U :该函数需要一个 8 位单 channel 图像(每个像素一个 uint8 值,例如灰度,但不是 RGB,每个像素有 3 个值)
  • depth == CV_32F :该函数需要 32 位单 channel 图像(每个像素一个浮点值)
  • type == _templ.type() :两个输入图像必须具有相同的类型(CV_8U 或 CV_32F)
  • _img.dims() <= 2 :图像最多只能有 2 维(无多 channel 图像,例如 RGB)

关于python - 如何修复函数 'cv::matchTemplate',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58672263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com