3 回答
TA贡献1806条经验 获得超5个赞
好吧,在昨天解决这个问题几个小时之后,我现在才发现这很遗憾......
元组中的值是浮点数。
> a = (x*width,y*height) b = (x_max*width, y_max*height)
在将它们更改为 int 并丢失逗号后的值后,它可以工作。
a = (int(x*width),int(y*height))
TA贡献1911条经验 获得超7个赞
我也发现自己有这个cv2.rectangle()错误。尝试了以上所有方法:
# Data types were ok:
# int for coordinates
# float32 for the image
>>> pt1 = (x, y)
>>> print(pt1)
(4, 10)
>>> print(image.dtype)
'float32'
但我仍然有错误。发生的事情是我正在构建一个 RGB 图像,并以这种方式将其更改为 BGR:
# Image from RGB to BGR
image = image[:, :, ::-1]
问题是这个操作返回了同一个数组的一个新视图(它不会改变它的内部存储方式)。因此,要真正将图像通道从 RGB 置换为 BGR,您需要使用 opencv 进行:
# Image from RGB to BGR
image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
这解决了这个问题,因为该操作改变了图像数组内部存储结构,因此 opencv 可以使用它。
TA贡献1784条经验 获得超7个赞
我在使用时遇到了同样的错误cv2.rectangle()
。我发现我的代码中的坐标值之一是浮点数。所以我通过类型转换解决了它。让我们假设您的情况pt1
分别pt2
是 (1.5,2) 和 (2,6.5)。因此,您可以简单地将值转换为整数。
pt1=(int(1.5),2) pt2=(2,int(6.5))
我希望它对你有帮助。
添加回答
举报