Как использовать opencv-python на WSL2 Ubuntu 20.04

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

Я только что установил Ubuntu-20.04 на WSL2. И я установил среду miniconda с python 3.7, а затем установил opencv-python с помощью “conda install opencv”. Но когда я пытаюсь выполнить самое простое cv2.imshow, он выдает следующую ошибку:

cv2.error: OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/highgui/src/window.cpp:632: ошибка: (-2:Неуточненная ошибка) Функция не реализована. Пересоберите библиотеку с поддержкой Windows, GTK+ 2.x или Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем повторно запустите cmake или скрипт конфигурации в функции ‘cvShowImage’

Кстати, я могу показать окно графика с помощью matplotlib.pyplot после установки VcXsrv и экспорта DISPLAY=host_ip_in_wsl2:1.1. И я также заставил свою видеокарту работать после установки обновления Windows 10 ноября 2021 года, драйвера CUDA для WSL2 и набора инструментов CUDA 11.0. Я могу нормально запускать Tensorflow 2.4.1 с GPU. Я могу компилировать darknet с GPU и использовать его для YOLO v1.

Я погуглил немного. Говорят, что удаление opencv и повторная установка из канала menpo могут помочь. Но этот пост 5 лет назад и не для WSL.

Я также видел несколько постов, демонстрирующих утомительную процедуру компиляции opencv-python из исходников.

Итак, как использовать opencv-python на Ubuntu-20.04 в WSL2? Предпочтительны простые подходы, такие как “conda install …” или “pip install …”. Компиляция из исходников также приемлема.

Я решил эту проблему, установив opencv-python с помощью pip.

$ pip install opencv-python

Но я не понимаю, почему pip работает, когда conda install opencv не срабатывает. Если кто-то знает подробности, не могли бы вы дать мне подсказку?

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

Чтобы использовать библиотеку OpenCV на Ubuntu 20.04 в WSL2, важно учитывать несколько нюансов, связанных с установкой и конфигурацией среды. Ниже представлена подробная инструкция.

Установка OpenCV на WSL2 Ubuntu 20.04

  1. Предварительные требования:
    Убедитесь, что ваш WSL2 обновлен до последней версии. Запустите Ubuntu и выполните следующие команды для установки необходимых зависимостей:

    sudo apt update
    sudo apt install -y build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
    sudo apt install -y libjpeg-dev libpng-dev libtiff-dev
    sudo apt install -y libatlas-base-dev gfortran

    Эти библиотеки необходимы для сборки и работы OpenCV с поддержкой графического интерфейса.

  2. Создание и активация виртуальной среды:
    Используйте conda для создания новой среды с Python 3.7, если вы еще этого не сделали:

    conda create -n opencv-env python=3.7
    conda activate opencv-env
  3. Установка OpenCV:
    Как вы уже заметили, команда conda install opencv может не сработать из-за отсутствия необходимых библиотек для GUI. Вместо этого, вы можете установить OpenCV через pip:

    pip install opencv-python
    pip install opencv-python-headless

    Пакет opencv-python включает в себя сборку OpenCV, которая может не содержать поддержку GUI, тогда как opencv-python-headless позволяет избежать проблем с GUI, если вы используете командную строку или фоновые процессы.

  4. Настройка дисплея:
    Убедитесь, что у вас установлена и работает программа X-сервера, такая как VcXsrv. Запустите VcXsrv и настройте его для работы с WSL. После этого установите переменную окружения DISPLAY:

    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

    Это позволяет вашим приложениям, использующим OpenCV, отображать графические окна на вашем рабочем столе Windows.

  5. Проверка работоспособности:
    Напишите простой скрипт для проверки работы OpenCV:

    import cv2
    import numpy as np
    
    # Создаем черное изображение
    img = np.zeros((512, 512, 3), np.uint8)
    cv2.putText(img, 'Hello, OpenCV!', (100, 250), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
    cv2.imshow('image', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    Запустите скрипт после активации среды с OpenCV. Если все настроено правильно, должен открыться графический интерфейс с вашим изображением.

Почему pip install сработал, а conda install — нет?

  • Разные источники: conda и pip используют разные репозитории и могут устанавливать разные версии и сборки библиотек. Установка через pip может предоставить более актуальную или совместимую сборку OpenCV с вашими текущими библиотеками и ОС.

  • Конфликт зависимостей: conda может не установить все необходимые зависимости, которые требуются для поддержки GUI. Пакеты, установленные через pip, могут иметь другие зависимости, которые включают поддержку GUI, такие как GTK.

Заключение

Использование OpenCV в WSL2 не всегда обходится без сложностей, однако соблюдение вышеизложенных рекомендаций позволит вам успешно интегрировать эту мощную библиотеку в ваш проект. Переход на установку через pip является наиболее простым и эффективным способом избежать проблем, связанных с графическим выводом.

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

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