【问题标题】:How can I display an image and my code keeps running in the background?如何显示图像并且我的代码在后台继续运行?
【发布时间】:2019-08-30 23:27:09
【问题描述】:

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

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

因此,如果有人知道在 python 代码继续运行时显示图像的方法,我会很高兴听到它。

谢谢

【问题讨论】:

  • 也许您可以尝试将图像保存为 jpg 或 png 并使用 os 命令打开它
  • 您可以要求用户按 R 键,您可以通过刷新正在显示的图像来处理。或者您可以使用 Qt 或类似工具编写自己的界面。
  • 多线程或多处理是您正在寻找的技术。

标签: python opencv matplotlib


【解决方案1】:

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

如果你在 Numpy/OpenCV 数组中有一个黑白图像,你可以把它变成一个 PIL Image 并像这样显示它:

from PIL import Image

Image.fromarray(NumpyImg).show()

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

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

【讨论】:

  • 抱歉迟到了,但实际上我使用了你的方法。谢谢
  • @YannPOURCENOUX 不客气。请点击计票旁边的空心勾号/复选标记 (✔️),将其视为接受正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多