我试图在脚本中制作具有随机颜色的矩形,但我遇到了这个非常奇怪的错误,当我使用硬编码颜色时,一切正常(例如(255, 0, 0)),但是当我尝试使用 np.random.randint 制作随机颜色,它给了我以下错误:
TypeError: function takes exactly 4 arguments (2 given)
这个最小的代码重现了我的问题。
import numpy as np
from cv2 import cv2
img = np.ones((900, 1200), dtype='uint8')
color = tuple(np.random.randint(0, 256, 3, dtype='uint8')) # Does not work
color = (127, 127, 127) # Works
cv2.rectangle(img, (100, 100), (300, 300), color, 4)
最佳答案
这确实是奇怪的行为,但以下内容适用于您的情况:
编辑:克里斯托夫的评论是正确的。您只需调用 tolist()
将颜色转换为 Python 标量即可。
示例:
import numpy as np
import cv2
img = np.ones((900, 1200), dtype='uint8')
color = np.random.randint(0, 256, 3, dtype=np.uint8)
cv2.rectangle(img, (100, 100), (300, 300), color.tolist(), 4)
cv2.imshow("Test", img)
cv2.waitKey()
输出:
关于python - 使用 np 数组中的元组作为颜色时 cv2.rectangle 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68459528/