Как я могу отобразить изображение, и мой код продолжает работать в фоновом режиме? - PullRequest
3 голосов
/ 09 апреля 2019

Я принимаю участие в проекте, в котором мы делаем решатель судоку. Я хочу напечатать изображение решенной сетки судоку на экране, пока наш чертежный стол рисует решение на бумажной сетке. Но я не могу найти способ отобразить изображение, и мой код продолжает работать.

Я рассмотрел - я думаю - все функции opencv и matplotlib.pyplot для отображения изображений, но каждый раз, когда код останавливается при отображении изображения и продолжается после его закрытия (plt.show () или с помощью cv2 .waitKey ()).

Так что, если у кого-то есть идея, как отобразить изображение, пока код Python продолжает работать, я был бы рад это услышать.

Спасибо

Ответы [ 2 ]

1 голос
/ 09 апреля 2019

При использовании метода PIL / Pillow Image.show() ваше изображение будет отображаться на экране, а код продолжит работу.

Если у вас есть черно-белое изображение в массиве Numpy / OpenCV, вы можете превратить его в изображение PIL и отобразить его так:

from PIL import Image

Image.fromarray(NumpyImg).show()

Если ваше изображение цветное, вам нужно перейти от BGR к RGB либо с помощью cv2.cvtColor(...BGR2RGB..), либо путем изменения третьего канала на что-то вроде (не проверено):

Image.fromarray(NumpyImg[:,:,::-1]).show()
0 голосов
/ 09 апреля 2019

Вы можете использовать Python многопоточность для этой проблемы. Один из способов сделать это - создать два потока. Имея отдельные темы, каждое действие будет независимым, так как вы можете решить головоломку и одновременно показать ее на экране.

Тема # 1 - Показать изображение

Нить № 2 - Рисование раствора на сетке для бумаги

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...