Давайте попробуем разобраться. Есть у меня мысль, что проблема возникает из-за того, что OpenCV не может использовать Qt. Поставьте зависимости для поддержки Qt и X11:
sudo apt-get update
sudo apt-get install libxcb-xinerama0
sudo apt-get install libqt5x11extras5
После установки попробуйте запустить свой код. Если проблема не ушла, едем дальше:
sudo apt-get install libxkbcommon-x11-0
sudo apt-get install libxcb-xinerama0-dev
Потом если что, попробуйте переустановить OpenCV:
pip3 uninstall opencv-python
pip3 install opencv-python
Если все решения не помогают, попробуйте поставить другую версию OpenCV:
pip3 install opencv-python==4.5.1.48
UPDATE
Проверьте переменную окружения DISPLAY с помощью команды
echo $DISPLAY
Обычно она должна иметь значение :0
или :1
.
Если у вас переменная DISPLAY не установлена, выполните следующую команду для установки значения по умолчанию:
export DISPLAY=:0
UPDATE 2
Такая ошибка может возникнуть при подключении через SSH, если у системы отключен монитор или если сессия SSH не настроена на передачу графического интерфейса. Что можно сделать:
Ставим на локальном компьютере X сервер. Если у вас Windows, можно воспользоваться VcXsrv
или Xming
. Если вы используете macOS, можно установить XQuartz
.
Запускаете X сервер.
Подключитесь к серваку с помощью SSH с опцией -X
или -Y
, чтобы включить проброс X11:
ssh -X username@remote_host
Опция -X включает проброс X11 с проверкой доступа, а опция -Y включает проброс с расширенными возможностями, не уверен, что оно вам надо, но всё же.
- Выше уже писал, после подключения через SSH с опцией
-X
или -Y
, убедитесь, что переменная окружения DISPLAY
установлена на удаленной машине. В этот раз, она может выдать что-то типа: localhost:1
Ну и теперь, когда вы подключены через SSH с включенным X11, ваш код должен работать без проблем, и графический интерфейс будет отображаться на вашем локальном компьютере.