Как запустить скрипт, отображающий изображения с помощью ssh?

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. Вы правы. Отображение изображений запускает собственный цикл событий на сервере и ожидает ввода с клавиатуры. Простой тест с чтением / записью в терминал работает просто отлично.