python - 使用 np 数组中的元组作为颜色时,cv2.rectangle 不起作用
问题描述
我试图在脚本中使用随机颜色制作矩形,但我遇到了这个非常奇怪的错误,当我使用硬编码颜色时,一切正常(如(255、0、0)),但是当我尝试使用 np.random.randint 制作随机颜色,它给了我以下错误:
TypeError:函数只需要 4 个参数(给定 2 个)
这个最小的代码重现了我的问题。
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()
输出:
推荐阅读
- docker - 移动容器内容和重新安装卷
- c++ - 我怎样才能有一个只有错误消息的 static_assert ?
- python - AttributeError:“NoneType”对象没有属性“get_values”
- r - R WebScraping 使用 Rvest 时获取额外的文本
- javascript - MySQL 查询搜索包括来自错误列的结果
- python - Jupyter Notebook 的多处理
- r - 如何对齐直方图和箱线图以使它们共享 x 轴?
- python - 我在使用 pymongo 在具有不同时区的 mongodb 中存储日期时遇到问题
- c# - 属性使用构造中的 C# 表达式返回 null
- android - Flutter API 变更问题