gpt4 book ai didi

python - Matplotlib:绘制两个图像之间的差异

转载 作者:行者123 更新时间:2023-11-28 23:02:18 25 4
gpt4 key购买 nike

我正在使用 Python 和 Matplotlib 进行绘图。

我有两个像这样的矩阵(灰度图像):

x = np.array([[0,1,0], [1,0,1]])
y = np.array([[0,0.4,0], [1,0,1]])

我想绘制一个新图像 z,它显示 x 和 y 之间的差异(比如绿点),并将其他点保留在灰度等级中。因此,在前面的示例中,如果 1 是黑色,0 是白色,则 z 应该是一个相同的图像,带有对应于 x 和 y 之间的差异(在本例中为 0.4)的绿点。

这样做的目的是在手写数据图像中动画执行 k-means 算法,以观察算法是如何工作的。

我希望这是清楚的,对不起我的英语。

最佳答案

最简单的解决方案包括首先计算输入数据的 RGBA 颜色,对其进行操作以设置与您的特殊颜色(绿色)不同的值,然后使用简单的 imshow() 修改后的 RGBA 数组。这是如何做到的:

>>> rgba_values = cm.gray(y)  # All RGBA values for your input value, with levels of gray
>>> rgba_values[x != y] = [0, 1, 0, 1] # Set the points where x and y differ to green (RBG = 0, 1, 0)
>>> imshow(rgba_values, interpolation='nearest')

数组 xy 之间不同的数据点现在显示为绿色: image with the common data in gray and the differences in green

如果你想在之前显示的图像上叠加你的绿点,你可以做类似的事情并在你不想修改原始图像的地方将 alpha channel 设置为 0:

>>> y_gray = cm.gray(y)  # RGBA image with gray levels
>>> imshow(y_gray, interpolation='nearest') # Image of one of the arrays
>>> diff_points = numpy.empty_like(y_gray) # Preparation of an overlay with marked points only
>>> diff_points[x == y, 3] = 0 # Common points not overwritten: alpha layer set to 0
>>> diff_points[x != y] = [0, 1, 0, 1] # Green for points that differ
>>> imshow(diff_points, interpolation='nearest')

关于python - Matplotlib:绘制两个图像之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10063389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com