Проблема с запуском окна live view OpenCV на Raspberry Pi через Remote-SSH в VS Code

Вопрос или проблема

У меня есть ПК для разработки на Windows 10 (WinPC), подключенный напрямую к Raspberry Pi 4 B (RPi) через Ethernet LAN. У WinPC есть доступ в Интернет через WLAN USB-адаптер, в то время как у RPi его нет. К RPi подключена камера Logitech.

Аппаратная конфигурация:

введите описание изображения здесь

Используя Visual Studio Code, я успешно подключаюсь к RPi по SSH и запускаю простые скрипты на Python, такие как программа "Hello World".

Однако я сталкиваюсь с проблемой при запуске скрипта на Python (cameraTest.py), который использует пакет cv2 для открытия живого изображения с камеры. Скрипт выглядит следующим образом:

import cv2
    
cam = cv2.VideoCapture(0)

cv2.namedWindow("test")

while True:

    ret, frame = cam.read()

    cv2.imshow("test", frame)

    k = cv2.waitKey(1)
    
    if k%256 == 27:

        print("Escape hit, closing...")

        break
  
cam.release()

cv2.destroyAllWindows()

Поведение:

Когда я запускаю скрипт на RPi удаленно через MobaXterm с моего WinPC, окно живого изображения камеры открывается без каких-либо проблем.

введите описание изображения здесь

Когда я пытаюсь запустить тот же скрипт с помощью Visual Studio Code через Remote-SSH, окно живого изображения не открывается, и я получаю следующее сообщение об ошибке:

qt.qpa.xcb: не удалось подключиться к дисплею 
qt.qpa.plugin: Не удалось загрузить плагин платформы Qt "xcb" в "/home/master/Desktop/ObjectDetection/.venv/lib/python3.11/site-packages/cv2/qt/plugins", хотя он был найден.
Это приложение не удалось запустить, так как ни один плагин платформы Qt не может быть инициализирован. Переустановка приложения может исправить эту проблему.

Доступные плагины платформы: xcb.

введите описание изображения здесь

Вопрос:

Что может быть причиной этой проблемы при использовании функции Remote-SSH в Visual Studio Code, и как я могу решить ее, чтобы успешно отобразить живое изображение с камеры?


Редактирование (теперь работает в Visual Studio Code!):

  1. запустите MobaXterm и SSH (с включенным X11-Forwarding) на RPi
  2. выполните команду export DISPLAY=:10
  3. затем выполните python cameraTest.py

введите описание изображения здесь

Ответ или решение

Описание проблемы

Вы сталкиваетесь с проблемой запуска окна живого просмотра камеры с использованием OpenCV на Raspberry Pi (RPi) через Remote-SSH в Visual Studio Code (VS Code). Вы успешно выполните свою программу Python с использованием MobaXterm, но при запуске из VS Code возникает ошибка, связанная с платформенным плагином Qt.

Причины проблемы

Ошибка, с которой вы столкнулись, указывает на то, что ваше приложение пытается использовать графический интерфейс, но не может подключиться к дисплею. Это связано с тем, что VS Code по умолчанию не устанавливает переменную окружения DISPLAY, необходимую для работы графических приложений через X11.

Анализ сообщения об ошибке

  1. qt.qpa.xcb: could not connect to display – Это означает, что приложение не может подключиться к вашему X-серверу, который обеспечивает графический вывод.
  2. Could not load the Qt platform plugin "xcb" – Хотя плагин xcb был найден в системе, он не может инициализироваться, что подтверждает отсутствие доступа к дисплею.

Решение проблемы

Чтобы исправить ошибку и получить доступ к живому просмотру камеры с использованием OpenCV в VS Code, вы можете следовать следующему процессу:

  1. Откройте MobaXterm и выполните SSH-подключение к Raspberry Pi с включенной переадресацией X11. Это важно, так как MobaXterm уже будет обрабатывать X-сервер.

  2. Задайте переменную окружения DISPLAY. Это необходимо для того, чтобы приложения знали, на какой дисплей выводить графику. Введите в терминале:

    export DISPLAY=:10

    Значение :10 может меняться в зависимости от вашего сеанса, так что убедитесь, что используете правильное значение. МобаXterm автоматически назначает дисплей для вашего X-сервера.

  3. Запустите скрипт с вашей программой:

    python cameraTest.py

    Если всё сделано правильно, окно живого просмотра должно открыться без ошибок.

Дополнительные советы

  • Проверьте версии: Убедитесь, что используете совместимые версии Python и OpenCV. Если необходимо, обновите пакеты до последних стабильных версий.
  • Кэш плагинов: Если ошибки все еще возникают, удалите кэш плагинов Qt, так как иногда это может помочь. Например, попробуйте удалить содержимое папки ~/.cache или используйте команды для сброса кэша.

Заключение

Следуя этим шагам, вы сможете успешно запускать и отображать живое изображение с камеры на Raspberry Pi через VS Code. Это решение касается настройки подключения к графическому интерфейсу в удаленной среде и может быть применено к другим приложениям, требующим отображения графики. Надеюсь, это поможет вам в работе с OpenCV на Raspberry Pi!

Оцените материал
Добавить комментарий

Капча загружается...