【发布时间】:2021-12-25 02:30:07
【问题描述】:
我正在尝试以随机颜色绘制从 cv2.threshold 获得的轮廓。 这是我的代码。
for c in contours:
color = list(np.random.rand(3)*255)
color = [int(color[0]), int(color[1]), int(color[2])]
#color = [255, 0,0]
cv2.drawContours(mosaic, [c], 0, color, 3)
但是轮廓总是用白色绘制的。不,我的图像不是灰度的,因为当我取消注释 color = [255, 0,0] 行时,轮廓以蓝色(或任何其他颜色)绘制,当我执行 color[1] += 20 之类的操作时,每次迭代都会按预期修改颜色。只有当我使用我的代码时,它才会被绘制成白色。打印时,变量颜色会按预期输出 [b,g,r] 值列表。我尝试使用元组、np 数组而不是列表来处理不同的数据类型,但无济于事。
有什么想法吗? 谢谢
【问题讨论】:
-
我认为您需要在每次迭代时更改随机值的种子值,否则每次迭代都会绘制相同的颜色。见docs.scipy.org/doc/numpy-1.15.1/reference/generated/…
-
好主意,但没有。我检查了输出。所有的颜色都不一样,没有一个是白色的。
-
你能提供最小可重复的例子吗?帮助你会更容易
-
您提出的 np.random 用法是可以接受的。无需更改它。 -- 抱歉,no,不要在循环中设置种子值。不是这样的。