python #opencv #ssh #gtk
#python #opencv #ssh #gtk
Вопрос:
У меня есть скрипт на Python, который отображает изображения на проекторе без взаимодействия с пользователем. Он вызывает функции OpenCV, которые используют серверную часть GTK. Локально он работает просто отлично. Когда я пытаюсь запустить его удаленно ssh
, я получаю Can't initialize GTK backend
сообщение об ошибке:
cv2.error: OpenCV(4.5.3) /tmp/pip-wheel-xjhn4aom/opencv-contrib-python_db9bf2c2b8dd41b592a48d20aac72627/opencv/modules/highgui/src/window_gtk.cpp:635: error: (-2:Unspecified error) Can't initialize GTK backend in function 'cvInitSystem'
Как это исправить? Я не хочу видеть изображения на клиенте. Я хочу, чтобы хост отображал изображения точно так же, как если бы скрипт был запущен локально.
Ответ №1:
Вероятно, это связано с тем, что на сервере, на который вы подключаетесь по ssh, не установлен X (графическая среда). Проверьте, есть ли у вас на этом сервере переменная среды с именем DISPLAY . Если X запущен на этом сервере, вы должны настроить отображение сеансов SSH в соответствии с номером запущенного дисплея. Надеюсь, это поможет…
Смотрите также здесь https://unix.stackexchange.com/questions/10121/open-a-window-on-a-remote-x-display-why-cannot-open-display
Комментарии:
1. На сервере / хосте работает полный рабочий стол (Raspberry Pi OS). У меня есть скрипт для отображения изображения
ssh pi@192.168.0.16 "DISPLAY=:0.0 python3 /home/pi/test.py
, но я не получаю его вывод, и он не принимает ввод с клавиатуры.2. Я получаю вывод из скрипта с помощью:
ssh pi@192.168.0.16
,export DISPLAY=:0.0
,python3 /home/pi/test.py
, но он не получает мой ввод с клавиатуры.3. Вероятно, это связано с тем, что отображение изображения блокируется. Пожалуйста, покажите нам код python.
4. Вы правы. Отображение изображений запускает собственный цикл событий на сервере и ожидает ввода с клавиатуры. Простой тест с чтением / записью в терминал работает просто отлично.