【发布时间】:2018-05-10 00:06:32
【问题描述】:
所以我有一个图像,并且我有该图像的像素掩码,其中掩码与图像大小相同,并且包含值 0 和 1,如果它是 0,我不想修改图像,如果是 1,我想在图像的该像素上添加透明颜色。
基本上,我想突出显示图像的某些部分,但仍能看到下面的内容。
现在我搜索了高低,但还没有找到一个简单的方法来做到这一点。我使用带有掩码的 np.where 来获取 1 的像素位置以与绘图函数一起使用。我首先尝试了标记尺寸较小且没有边缘颜色的散点图 (small scatter plot markers in matplotlib are always black),但标记的大小不是一个图像像素,它们似乎是绝对大小,因此取决于图形的大小,透明度是受影响的和奇怪的图案是由重叠的标记创建的。
只是常规的 pyplot 绘图函数创建了我想要的确切外观(其中着色平滑且不受图形大小的影响),但它也着色了掩码中不相交段之间的水平连接(因为我猜它是画线),所以我不能用那个。
最有效的是补丁,我在这个问题中遇到过:(How to set a fixed/static size of circle marker on a scatter plot?)。我发现宽度和高度为 1 的矩形块给了我想要的效果,我可以在图像的某些像素上放置透明颜色。然而,事实证明,这会为某些图像生成大量(数万个)矩形,因此速度很慢。即使使用 PatchCollection 而不是每次调用 addPatch 时它仍然很慢。
现在我可能只需连接相邻的矩形以减少需要绘制的东西的数量,但我只是想知道是否有更简单的方法来做到这一点?
谢谢。
【问题讨论】:
标签: python matplotlib