OpenCV работает неправильно с python на Linux с anaconda. Ошибка при выполнении cv2.imshow()
Это точная ошибка, которую я получаю. Моя ОС - Ubuntu 16.10.
Ошибка OpenCV: ошибка Unspecified (функция не реализована). Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем перезапустите cmake или настройте script) в cvShowImage, файл /feedstock _root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp, строка 545
Traceback (последний последний вызов): Файл "untitled.py", строка 7, в cv2.imshow( 'изображения', IMG)
cv2.error:/feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp:545: error: (-2) Функция не реализована. Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы находитесь на Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем запустите cmake или настройте script в функции cvShowImage
мой код:
import numpy as np
import cv2
# Load an color image in grayscale
img = cv2.imread('0002.png',0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
0002.png - это изображение в том же каталоге, что и программа.
Я сначала установил anaconda с python 3.5, затем я установил opencv, используя команду
conda install -c conda-forge opencv
Я установил libgtk2.0-dev так же, как это сказал ошибка, но я все равно получаю ту же ошибку.
Любая помощь приветствуется. Я пытался решить это в течение нескольких часов.
Ответы
Ответ 1
1. Самый простой способ:
conda remove opencv
conda update conda
conda install --channel menpo opencv
или (для OpenCV 3.1):
conda install -c menpo opencv3
2. А если вы не хотите этого делать, вы можете попробовать использовать matplotlib.
import cv2
import matplotlib.pyplot as plt
img = cv2.imread('img.jpg',0)
plt.imshow(img, cmap='gray')
plt.show()
3. Или попробуйте собрать библиотеку самостоятельно с опцией WITH_GTK=ON
или что-то в этом WITH_GTK=ON
.
Обновление - 18 июня 2019
Я получил эту ошибку в моей системе Ubuntu (18.04.1 LTS) для openCV 3.4.2, поскольку вызов метода для cv2.imshow не удался. Я использую анаконду. Только следующие 2 шага помогли мне решить:
conda remove opencv
conda install -c conda-forge opencv=4.1.0
Если вы используете pip, вы можете попробовать
pip install opencv-contrib-python
Ответ 2
Мне приходилось сталкиваться с этой проблемой пару раз, вот что до сих пор работало последовательно:
conda remove opencv
conda install -c menpo opencv
pip install --upgrade pip
pip install opencv-contrib-python
Ответ 3
Если вы установили OpenCV с использованием пакета opencv-python pip в любой момент времени, обратите внимание на следующее примечание, взятое из https://pypi.python.org/pypi/opencv-python
ВАЖНОЕ ПРИМЕЧАНИЕВ настоящее время некоторые колеса MacOS и Linux имеют некоторые ограничения:
- связанная с видео функциональность не поддерживается (не скомпилирована с помощью FFmpeg)
- например
cv2.imshow()
не будет работать (не скомпилирован с поддержкой GTK + 2.x или Carbon)
Также обратите внимание, что для установки из другого источника сначала нужно удалить пакет opencv-python
Ответ 4
Для меня (Arch Linux, Anaconda с Python 3.6) установка из предложенных каналов menpo
или loopbio
ничего не изменила. Мое решение (см. Связанный вопрос) было
- установить pkg -c onfig (
sudo pacman -Syu pkg-config
), - удалить opencv из среды (
conda remove opencv
) и - переустановите opencv из канала conda-forge (
conda install -c conda-forge opencv
)
conda list
opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge
теперь возвращает opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge
и все окна, запущенные с использованием cv2, работают нормально.
Ответ 5
Метод работы (проверено 19 апреля 2019 г.)
Эти ошибки происходят из-за conda. Откройте Anaconda Prompt и удалите conda opencv, если она установлена, с помощью команды ниже
Если у вас есть conda env, сначала активируйте его, conda activate myenv
conda remove opencv
После установки opencv через pip (нажмите здесь для получения официальной информации)
pip install opencv-contrib-python
если pip еще не установлен, используйте команду conda install pip
.
Ответ 6
Я последовал этому руководству (ошибка OpenCV GTK + 2.x) и сделал следующее. Это сработало для меня:
- установите пакеты: libgtk2.0-dev и pkg-config
- cd в каталог opencv
- mkdir Release
- cd Release
- Запустите команду:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..
- сделать
- sudo make install
Ответ 7
Обратите внимание, что он жалуется на libgtk2.0-dev и pkg-config. Вот решение. Удалите существующую установку openCV.
conda удалить opencv3
Установите эти пакеты перед установкой opencv-
conda install gtk2 pkg-config
Теперь установите opencv из menpo
conda install -c https://conda.anaconda.org/menpo opencv3
Ответ 8
Я использовал pip для установки opencv-python. (https://pypi.org/project/opencv-python/)
1) Удалить пакет opencv из conda:
>> conda remove opencv
2) Добавьте в свой файл env.yml:
...
dependencies:
- numpy
- pytest
...
- pip:
- opencv-python
Ответ 9
Удалить opencv из анаконды =
Конда удалить OpenCV
Затем переустановите opencv с помощью pip:
pip install opencv
Это работает для меня.
Ответ 10
Моя среда - Win10, и я добавил путь anaconda к переменным окружения PATH, cv2.imshow работал
C:\Users\user\Anaconda3
C:\Users\user\Anaconda3\Scripts
Затем перезагрузите окна
Ответ 11
Хотя на это уже ответили, для меня решение conda-forge сработало со взломом. Моя рабочая станция - машина Centos 6, и я использую виртуальную среду conda (anaconda 2). Создать среду
conda create --name test python=2.7
а затем активировать его
conda activate test
Теперь установите opencv из conda-forge
conda install -c conda-forge opencv
Теперь установите Matplotlib в этой среде (и это взломать 1)
conda install matplotlib
Пусть проверят, сейчас imshow работает или нет. В терминале активируйте тестовую среду и запустите python. В переводчике делай
import cv2
import matplotlib.pyplot as plt # hack 2
img = cv2.imread('your_image_file',0)
cv2.imshow('image',img)
Это должно появиться окно с изображением. Я не стал дальше исследовать, как это решило дело.
Примечание 1: Вы можете увидеть некоторую ошибку, связанную с xkb, затем в вашем файле .bashrc добавьте
export QT_XKB_CONFIG_ROOT =/usr/share/X11/xkb
Примечание 2: Вы можете увидеть некоторые ошибки, связанные с XDG_RUNTIME_DIR, затем в вашем файле .bashrc также добавьте
экспортировать XDG_RUNTIME_DIR =.tmp/myruntime и определить myruntime с помощью mkdir -p.tmp/myruntime
Ответ 12
Если вы работаете в докере, вы можете получить эту ошибку. Решение деинсталлируйте текущее и установите безголовое
pip install opencv-python == 3.4.5.20
pip install opencv-contrib-python == 3.4.5.20
Если вы пишете на изображение и отображаете его, вам может потребоваться следующее
apt-get update && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender1
И если вам интересно, как получить дисплей от Docker, это возможно через X11 на вашем хосте