当前位置: 首页 > 知识库问答 >
问题:

在matplotlib python中,如何在白色背景上以不同的随机颜色显示对象?

呼延英奕
2023-03-14

我有一个图像,其中我有标记有数字的对象,例如所有属于对象1的像素都有值1,等等。图像的其余部分为零。

我想看到每个物体在不同的随机颜色与白色背景。

我试过几种颜色贴图,比如灰色、喷射色等,但没有一种符合要求,因为它们按顺序将对象从暗到亮进行着色。

谢谢。

共有2个答案

富波光
2023-03-14

我遇到了同样的问题,但我想使用HSV颜色。

以下是所需的调整:

注意,在这种情况下,我知道标签的数量(NLabel)

from matplotlib.colors import LinearSegmentedColormap
import colorsys
import numpy as np

#Create random HSV colors
randHSVcolors = [(np.random.rand(),1,1) for i in xrange(nlabels)]

# Convert HSV list to RGB
randRGBcolors=[]
for HSVcolor in randHSVcolors:
  randRGBcolors.append(colorsys.hsv_to_rgb(HSVcolor[0],HSVcolor[1],HSVcolor[2]))

random_colormap = LinearSegmentedColormap.from_list('new_map', randRGBcolors, N=nlabels)

我不使用白色作为第一种颜色,但应该与前面的答案相同来实现它。

庞鸿骞
2023-03-14

使用随机颜色制作自己的颜色贴图是解决此问题的快速方法:

colors = [(1,1,1)] + [(random(),random(),random()) for i in xrange(255)]
new_map = matplotlib.colors.LinearSegmentedColormap.from_list('new_map', colors, N=256)

第一种颜色是白色,给你白色的背景。

完整代码正在运行:

import scipy
from scipy import ndimage
import matplotlib.pyplot as plt
import matplotlib
from random import random

colors = [(1,1,1)] + [(random(),random(),random()) for i in xrange(255)]
new_map = matplotlib.colors.LinearSegmentedColormap.from_list('new_map', colors, N=256)

im = scipy.misc.imread('blobs.jpg',flatten=1)
blobs, number_of_blobs = ndimage.label(im)

plt.imshow(blobs, cmap=new_map)
plt.imsave('jj2.png',blobs, cmap=new_map)
plt.show()

样品标签,随机着色输出:

希望这对你来说是随机的!

 类似资料:
  • 问题内容: 我正在尝试打印页面。在该页面中,我为表格提供了背景色。当我在chrome中查看打印预览时,它不具有背景色属性… 所以我尝试了这个属性: 但仍然没有显示颜色。 问题答案: Chrome CSS属性可以正常工作。 但是,确保您拥有正确的CSS进行打印通常很棘手。可以做几件事来避免您遇到的困难。首先,将所有打印CSS与屏幕CSS分开。这是通过和完成的。 通常,仅设置一些额外的CSS是不够的,

  • 在超文本标记语言中,我什么时候使用颜色,背景颜色和背景标签有什么区别? 有什么区别?

  • 本文向大家介绍如何在HTML中显示元素的背景色?,包括了如何在HTML中显示元素的背景色?的使用技巧和注意事项,需要的朋友参考一下 在HTML中使用 bgcolor属性显示元素的背景色。它用于控制HTML元素的背景,特别是页面正文和表格背景。 注意-HTML5不支持此属性。 示例 您可以尝试运行以下代码以了解如何在HTML中实现bgcolor属性-

  • background(int $color, int $pattern = self::PATTERN_SOLID): self int $color $format = new \Vtiful\Kernel\Format($fileHandle); ​ $backgroundStyle = $format->background( \Vtiful\Kernel\Format::COLO

  • 本文向大家介绍如何在HTML中设置背景颜色?,包括了如何在HTML中设置背景颜色?的使用技巧和注意事项,需要的朋友参考一下 要在HTML中设置背景颜色,请使用style属性。style属性指定元素的内联样式。该属性与HTML <body>标记以及CSS属性background-color一起使用。HTML5不支持<body>标记的bgcolor属性,因此CSS样式用于添加背景色。HTML5中不推荐

  • 我已经创建了发送电子邮件后,在詹金斯使用可编辑的电子邮件通知插件每次构建。在邮件正文中,我添加了由maven surefire Report生成的emailable-report.html。我发现这份报告在gmail中的外观有问题--尽管有Outlook,但它根本没有显示背景色。 因此,问题是如何在emailable-report.html中修改CSS样式以获得正确的视图?是否应该使用TestNG