TypeError: an integer is required (got type list)的一种解决方案

本文深入探讨了使用OpenCV进行图像模板匹配时遇到的错误,详细分析了代码中因tl变量类型错误导致的问题,并给出了正确的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我的问题:
图1在这里插入图片描述
图1
我的代码:

import numpy as np
import cv2 as cv

def template_image_demo():
    target = cv.imread("D:\wenjian\GraduateCourse\DigitalImageProcessing\code-python\image\cobe1.jpg")
    tpl = cv.imread("D:\wenjian\GraduateCourse\DigitalImageProcessing\code-python\image\cobe3Cut.jpg")
    cv.imshow("template", tpl)
    cv.imshow("target", target)
    methods = [cv.TM_SQDIFF_NORMED, cv.TM_CCORR_NORMED, cv.TM_CCOEFF_NORMED]
    th, tw = tpl.shape[:2]
    print("th = ", th)
    print("tw = ", tw)
    for md in methods:
        result = cv.matchTemplate(target, tpl, md)
        min_val, max_val, min_loc, max_loc = cv.minMaxLoc(result)
        print("min_val = ", min_val)
        print("max_val = ", max_val)
        print("min_loc = ", min_loc)
        print("max_loc = ", max_loc)
        if md == cv.TM_SQDIFF_NORMED:
            if min_val > 0.5:
                print("SQDIFF图像不匹配")
                tl = [0, 0]
            else:
                tl = min_loc
        else:
            if max_val < 0.5:
                print("图像不匹配")
                tl = [0, 0]
            else:
                tl = max_loc

	br = (tl[0] + tw, tl[1] + th)
        cv.rectangle(target, tl, br, [0, 0, 255], 3)
        cv.imshow("match"+np.str(md), target)
        template_image_demo()
	cv.waitKey(0)
	cv.destroyAllWindows()

``解决:
		tl = (0, 0)
从图一可以看出tl = min_loc 的值都是圆括号中放值,即()
而我代码中的tl = [0, 0]却是用中括号,因此犯错。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值