Проблема с запуском и пакетами OpenCV python. Debian

Рейтинг: 0Ответов: 1Опубликовано: 15.03.2023

Установил основные библиотеки:

sudo apt-get install python3-opencv
pip3 install numpy opencv-python

Раньше всё работало, но с переустановкой ОС (Debian) начала вылазить ошибка:

qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/usr/local/lib/python3.9/dist-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.

Код использовал тестовый (чтобы просто проверить работу):

import cv2

cap = cv2.VideoCapture(1)

while True:
    ret, img = cap.read()
    cv2.imshow("camera", img)
    if cv2.waitKey(10) == 27:
        break
cap.release()
cv2.destroyAllWindows()

Ответы

▲ 1Принят

Давайте попробуем разобраться. Есть у меня мысль, что проблема возникает из-за того, что 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 не настроена на передачу графического интерфейса. Что можно сделать:

  1. Ставим на локальном компьютере X сервер. Если у вас Windows, можно воспользоваться VcXsrv или Xming. Если вы используете macOS, можно установить XQuartz.

  2. Запускаете X сервер.

  3. Подключитесь к серваку с помощью SSH с опцией -X или -Y, чтобы включить проброс X11:

     ssh -X username@remote_host
    

Опция -X включает проброс X11 с проверкой доступа, а опция -Y включает проброс с расширенными возможностями, не уверен, что оно вам надо, но всё же.

  1. Выше уже писал, после подключения через SSH с опцией -X или -Y, убедитесь, что переменная окружения DISPLAY установлена на удаленной машине. В этот раз, она может выдать что-то типа: localhost:1

Ну и теперь, когда вы подключены через SSH с включенным X11, ваш код должен работать без проблем, и графический интерфейс будет отображаться на вашем локальном компьютере.