<p>由于您的目标是对控制台输出进行实时可视化,所以最好创建和修改绘图,而不是修改图像。我可以考虑以下几点。在</p>
<pre><code>import matplotlib.pyplot as plt
from time import sleep
img = plt.imread("background.png")
img_height = 500 # images height in pixel
img_width = 800 # image width
fig, ax = plt.subplots()
ax.imshow(img)
right = plt.axvspan(0, img_width//2, facecolor='green', alpha=0.5)
left = plt.axvspan(img_width//2, img_width, facecolor='green', alpha=0.5)
colors = {0.0: None, 1.1: 'green', 2.2: 'blue', 3.3: 'red'}
zone = {1: left, 2: right}
plt.axis([0, img_width, 0, img_height])
plt.show(block=False)
def paint_background(pos, val):
c = colors[val]
if c is None:
zone[pos].set_alpha(0)
else:
zone[pos].set_alpha(0.5)
zone[pos].set_facecolor(c)
plt.draw()
# Demonstrate how it looks like
example_sequence = [
(1, 1.1), (2, 3.3), (1, 0.0), (2, 2.2),
(1, 1.1), (2, 2.2), (2, 0.0), (2, 2.2)]
for (pos, val) in example_sequence:
paint_background(pos, val)
sleep(1)
</code></pre>
<p>输出看起来与下面的屏幕截图相似,颜色区域的变化如您的问题所述。在</p>
<p><a href="https://i.stack.imgur.com/beLZS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/beLZS.png" alt="enter image description here"/></a></p>
<p>使用matplotlib可以提供许多附加功能,如添加标题或设置轴描述,如果需要,还可以将绘图序列写入文件。在</p>