python - 使用 np 数组中的元组作为颜色时 cv2.rectangle 不起作用

标签 python opencv

我试图在脚本中制作具有随机颜色的矩形,但我遇到了这个非常奇怪的错误,当我使用硬编码颜色时,一切正常(例如(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()

输出:

output jpg

关于python - 使用 np 数组中的元组作为颜色时 cv2.rectangle 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68459528/

相关文章:

Python从末尾读取文件,文件很大,无法读入内存

c++ - 我有可能使用与查找轮廓相关的编码

c++ - OpenCV 指向位图处理的指针

opencv - 视频捕捉设置参数范围?

opencv - Plt 绘图到 OpenCV 图像/Numpy 数组

python - Python 操作顺序

python - Sphinx 从自定义代码引用中删除代码格式

python - 如何从一个窗口(类)到另一个窗口(类)获取进度条 start() 信息?

在子进程 : how to close subprocess properly? 中使用 tcpdump 的 Python

python - 图像颜色检测