openCV imshow в WSL с использованием Xming

Я работаю над некоторыми задачами по обработке видео и использую opencv-python 4.2.0 в качестве моей библиотеки. Сначала была проблема с отображением видеокадров с помощью функции imshow - я видел только маленькое черное окошко, но я подумал, что что-то не так с моей логикой. Я попытался воспроизвести проблему в простейшей форме - загрузку и отображение статического изображения:

import cv2
frame = imread("path/to/some/image.png")
print(frame.shape)
cv2.imshow('test', frame)

Выход:

>>> (600, 600, 3)

окно opencv

Раньше у меня не было подобных проблем в этой среде разработки. Я разрабатываю под WSL (Ubuntu 16.04) и использую Xming для отображения окна программы под Win10.


person Jan Parzydło    schedule 01.04.2020    source источник
comment
Я удивлен, что это вообще отображается без waitKey()   -  person Mark Setchell    schedule 01.04.2020
comment
если вы не используете waitKey(), ему некогда его отображать. imshow() не ждет изображения и программа завершает работу.   -  person furas    schedule 01.04.2020
comment
Нашли какое-нибудь решение? У меня тоже эта проблема   -  person Snail    schedule 08.07.2020
comment
@Snail решение, предложенное furas, решает проблему   -  person Jan Parzydło    schedule 10.07.2020


Ответы (1)


Насколько я знаю, изображение в окне обновляется при выполнении функции waitKey(), поэтому вы должны ее использовать.

import cv2

frame = cv2.imread("path/to/some/image.png")
print(frame.shape)

cv2.imshow('test', frame)
cv2.waitKey(1)

По крайней мере, это решает эту проблему в Linux Mint 19.3 на основе Ubuntu 18.04.

person furas    schedule 01.04.2020