首页 > 解决方案 > cv2.rectangle() 调用重载方法,虽然我给出了其他参数

问题描述

cv2.rectangle 有两种调用方式:

来源:https ://docs.opencv.org/4.1.2/d6/d6e/group__imgproc__draw.html#ga07d2f74cadcf8e305e810ce8eed13bc9

我将矩形称为如下:

cv2.rectangle(img=cv2_im, pt1=a, pt2=b, 颜色=(0, 255, 0), 厚度=3, lineType=cv2.LINE_AA)

错误信息:

cv2.rectangle(img=cv2_im, pt1=a, pt2=b, color=(0, 255, 0), 厚度=3, lineType=cv2.LINE_AA) TypeError: rectangle() 缺少必需的参数 'rec' (pos 2 )

我不明白为什么应用程序会尝试调用该方法的重载版本。U 明确定义版本 1 调用。我尝试用 (x,y) 等更改变量 a ,但它不起作用。正确的方法调用仅在我第一次调用 retangle() 之后才有效,它希望我使用它的重载版本。


在第二次调用之间,我使用了 cv2 选择性搜索并设置了以下内容: cv2.setUseOptimized(True) cv2.setNumThreads(4)

希望你们看到我做错了什么。

标签: pythonopencvoverloadingrectangles

解决方案


好吧,在昨天解决这个问题几个小时之后,我现在才发现这很遗憾......

元组中的值是浮点数。

> a = (x*width,y*height) b = (x_max*width, y_max*height)

在将它们更改为 int 并丢失逗号后的值后,它可以工作。

a = (int(x*width),int(y*height))

推荐阅读