OpenCV绘制轮廓总是以白色绘制



我正在尝试用随机颜色绘制从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数组而不是列表,但没有用。

有什么想法吗?感谢

我想明白了。图像是float64,我猜它在opencv中的值范围可能较低,所以当我传递它时,它超出了范围,并将其绘制为白色。我把它设置为uint8,现在它工作了。仍然无法解释为什么当通过[255,0,0]之类的东西时,它会正确地绘制颜色。

最新更新