Qt.qpa.xcb: не удалось подключиться к отображению localhost: 17.0 ДРУГАЯ настройка

Я запускаю свой код Python в VSCode в Windows 10, который подключается по ssh к удаленному RPi 4. Получил эту ошибку:

qt.qpa.xcb: could not connect to display :1
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.

Stack trace (most recent call last):
#25   Object "python", at 0x558888297b, in 
#24   Object "/lib/aarch64-linux-gnu/libc.so.6", at 0x7f847bbe17, in __libc_start_main
#23   Object "python", at 0x55888840a3, in Py_BytesMain
#22   Object "python", at 0x5588883a3b, in Py_RunMain
#21   Object "python", at 0x558895f4eb, in PyRun_SimpleFileExFlags
#20   Object "python", at 0x558895f323, in 
#19   Object "python", at 0x558895bfcb, in 
#18   Object "python", at 0x558895beb7, in 
#17   Object "python", at 0x5588924057, in PyEval_EvalCode
#16   Object "python", at 0x5588924017, in PyEval_EvalCodeEx
#15   Object "python", at 0x5588923c4f, in _PyEval_EvalCodeWithName
#14   Object "python", at 0x5588881e9b, in _PyEval_EvalFrameDefault
#13   Object "python", at 0x558888fe7f, in _PyObject_MakeTpCall
#12   Object "python", at 0x558888f7af, in 
#11   Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/cv2.abi3.so", at 0x7f77b8a43b, in 
#10   Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/cv2.abi3.so", at 0x7f7876e87f, in 
#9    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/cv2.abi3.so", at 0x7f7878089b, in 
#8    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/cv2.abi3.so", at 0x7f78774537, in 
#7    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Widgets-b1296c1e.so.5.15.0", at 0x7f7585db03, in QtOpenCVPython::QApplicationPrivate::init()
#6    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Gui-a45894d1.so.5.15.0", at 0x7f74f9fa77, in QtOpenCVPython::QGuiApplicationPrivate::init()
#5    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Core-9e162752.so.5.15.0", at 0x7f749710ff, in QtOpenCVPython::QCoreApplicationPrivate::init()
#4    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Gui-a45894d1.so.5.15.0", at 0x7f74f9ce07, in QtOpenCVPython::QGuiApplicationPrivate::createEventDispatcher()
#3    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Gui-a45894d1.so.5.15.0", at 0x7f74f9c963, in QtOpenCVPython::QGuiApplicationPrivate::createPlatformIntegration()
#2    Object "/home/pi/mambaforge/envs/mb/lib/python3.8/site-packages/cv2/../opencv_contrib_python.libs/libQt5Core-9e162752.so.5.15.0", at 0x7f7477213b, in QtOpenCVPython::QMessageLogger::fatal(char const*, ...) const
#1    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0x7f847bba9f, in abort
#0    Object "/lib/aarch64-linux-gnu/libc.so.6", at 0x7f847ceeac, in gsignal
Aborted (Signal sent by tkill() 5843 1000)
Aborted

Вот мой C:\Users\mywname\config

Host 192.168.1.8
  HostName 192.168.1.8
  User pi
  ForwardX11 yes
  ForwardX11Trusted yes
  EnableSSHKeysign yes
  IdentityFile C:\Users\<myusername>\.ssh\id_rsa

Немного контекста кода: Мой код Python, который находится на RPi и вызывает OpenCV cv.image(), чтобы показать видео с камеры, подключенной к RPi. Я хочу запустить код из моего VSCode в Windows 10 и увидеть, как окно видео появляется в моей Windows 10.

У меня не установлен QT в моей Windows 10, у меня есть opencv-contrib-python 4.7.0.72 на моем RPi, и я не хочу менять его на безголовый opencv, поскольку одной из библиотек Python требуется opencv-contrib-python 4.7.0.72.

Что я сделал Провел некоторое исследование и обнаружил, что мне нужно включить переадресацию X11, поэтому я установил Remote X11 и Remote X11 (SSH), также настроил свой вход в SSH с парами закрытого и публичного ключей и протестировал запуск ssh с терминала. напрямую, он работает, не спрашивая у меня пароль.

Также обнаружил, что мне нужно использовать магию: export DISPLAY=:0

Я пробовал, вместо того, чтобы показывать видео на моей Windows 10, оно показывает видео на RPi, что имеет смысл. Поэтому я изменил его на export DISPLAY=:1, а затем получил ошибку.

Итак, мой вопрос: как я могу отобразить окно видео в моей Windows 10.

Добавьте export QT_DEBUG_PLUGINS=1

eyllanesc 30.03.2023 02:58

Вы должны настроить сервер X11 на своем ПК с Windows.

relent95 31.03.2023 03:10

спасибо @ relent95, я обнаружил, что мне нужно установить X11 XLauncher на свой ПК с Windows, а также настроить доступ по SSH.

Franva 03.04.2023 06:05

спасибо @eyllanesc, неплохая идея добавить отладочную информацию.

Franva 03.04.2023 06:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
4
303
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Наконец-то я понял, как это сделать:

  1. установить X Server на Windows VcXsrv Windows X Server
  2. Я настроил аутентификацию на основе ключа SSH (не уверен, что это обязательно)
  3. Я установил расширения Remote X11 (SSH) и Remote X11 в VSCode как на стороне Windows, так и на стороне RPi.
  4. Для настроек расширения X11 (SSH) я установил XAuth Permission Level как доверенный.
  5. Перейдите на вкладку настроек Remote [SSH: ] и измените Display Command на: echo DISPLAY=$DISPLAY
  6. Я запускаю XLauncher (X Server) в Windows и нажимаю Enter, чтобы выбрать все настройки по умолчанию до конца.
  7. Запустите мой код, и cv2.imshow() наконец-то появится в моей Windows~!!

Другие вопросы по теме