Python元组传参, cv2.rectangle的奇怪错误
colors = (np.array(colors) * 255).astype(np.int)
color = colors[i]
cv2.rectangle(img, (x0, y0), (x1, y1), color, 2)
"""
tuple(colors[i])
(0, 255, 0)
tuple(colors[i]) == (0,255,0)
True
cv2.rectangle(img, (x0, y0), (x1, y1), colors[i], 2)
Traceback (most recent call last):
File "<string>", line 1, in <module>
cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'rectangle'
> Overload resolution failed:
> - Scalar value for argument 'color' is not numeric
> - Scalar value for argument 'color' is not numeric
> - Can't parse 'rec'. Expected sequence length 4, got 2
> - Can't parse 'rec'. Expected sequence length 4, got 2
cv2.rectangle(img, (x0, y0), (x1, y1), (0,255,0), 2)
"""
就是这个问题,tuple(a)
,a 是一个numpy int
的数组,然后a
也和某个元组相等,但是传参就不行
通过这个博客得到了启发
进行如下尝试
import numpy as np
a = np.array([1,2,3]).astype(np.int32)
b = tuple(a)
print(b) # (1,2,3)
print(b == a) # [ True True True]
print(type(b[0])) # <class 'numpy.int32'>
c = (1,2,3)
print(c == a) # [ True True True]
print(c == b) # True
print(type(c[0])) # <class 'int'>
发现,虽然通过 Numpy 转换过来的b
虽然和a
数值上相等,但是其数据类型不是int
,因此在 cv2 当中出现了报错
正确的转换方式应该是
tuple_int = tuple(map(lambda x:int(x), a))
print(type(tuple_int[0]))
作者:JoyFrank
出处:https://www.cnblogs.com/zxyfrank/p/17363630.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
世界上只有一种英雄主义,就是看到生活本来的样子,并且热爱它
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律