如何显示图像,并且代码在后台继续运行?

时间:2019-04-09 15:49:48

标签: python opencv matplotlib

我参与了一个我们要制作数独求解器的项目。我想在我们的绘图台在纸网格上绘制解决方案时在屏幕上打印已解决的数独网格的图像。 但是我找不到显示图像的方法,并且我的代码一直在运行。

我研究了-我认为-所有opencv和matplotlib.pyplot函数都可以显示图像,但是每次代码在显示图像时停止,并在关闭图像后继续(plt.show()或使用cv2 .waitKey())。

因此,如果有人想在python代码保持运行的同时显示图像的方法,我将很高兴听到它。

谢谢

2 个答案:

答案 0 :(得分:1)

PIL / Pillow Image.show()方法将使图像显示在屏幕上,并且代码将继续运行。

如果Numpy / OpenCV数组中有黑白图像,则可以将其制作成PIL图像并按以下方式显示:

from PIL import Image

Image.fromarray(NumpyImg).show()

如果图像是彩色的,则需要使用cv2.cvtColor(...BGR2RGB..)或通过反转第3个通道(例如(未测试))从BGR变为RGB:

Image.fromarray(NumpyImg[:,:,::-1]).show()

答案 1 :(得分:0)

您可以使用python multithreading解决此问题。一种方法是拥有两个线程。通过使用单独的线程,每个动作将是独立的,因为您可以解决难题并将其同时显示在屏幕上。

线程#1-显示图像

线程2-在纸网格上绘制解决方案