Подтвердить что ты не робот

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 так же, как это сказал ошибка, но я все равно получаю ту же ошибку. Любая помощь приветствуется. Я пытался решить это в течение нескольких часов.

4b9b3361

Ответ 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 ничего не изменила. Мое решение (см. Связанный вопрос) было

  1. установить pkg -c onfig (sudo pacman -Syu pkg-config),
  2. удалить opencv из среды (conda remove opencv) и
  3. переустановите 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 на вашем хосте