Ошибка OpenCV: функция не реализована

Я пытаюсь заставить OpenCV работать с Python на моей машине Ubuntu. Я загрузил и установил OpenCV, но когда я пытаюсь запустить следующий код python (который должен захватывать изображения с веб-камеры и нажимать их на экран)

import cv

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE)
capture = cv.CaptureFromCAM(0)

def repeat():
    frame = cv.QueryFrame(capture)
    cv.ShowImage("w1", frame)
    time.sleep(10)

while True:
    repeat()

Я получаю следующую ошибку:

The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or
Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and
pkg-config, then re-run cmake or configure script

Итак, я делаю то, что они просят: установите пакеты, перейдите в папку, откуда я установил OpenCV, и запустите

sudo make uninstall
make
sudo make install

Но когда я пытаюсь запустить python, он дает мне ту же ошибку. Я что-то пропустил?

Ответ 1

Если он вызывает ошибки с помощью gtk, попробуйте qt.

sudo apt-get install libqt4-dev
cmake -D WITH_QT=ON ..
make
sudo make install

Если это не сработает, есть простой выход.

sudo apt-get install libopencv-*

Это загрузит все необходимые зависимости (хотя кажется, что у вас установлены все необходимые библиотеки, но вы можете попробовать один раз). Это, вероятно, установит OpenCV 2.3.1 (Ubuntu 12.04). Но поскольку у вас OpenCV 2.4.3 в /usr/local/lib, включите этот путь в /etc/ld.so.conf и выполните ldconfig. Так что теперь, когда вы используете OpenCV, вы будете использовать последнюю версию. Это не лучший способ сделать это, но если у вас все еще есть проблемы с qt или gtk, попробуйте это один раз. Это должно работать.

Обновление - 18 июня 2019 года

Я получил эту ошибку в моей системе Ubuntu (18.04.1 LTS) для openCV 3.4.2, поскольку произошел сбой вызова метода cv2.imshow (например, в строке cv2.namedWindow(name) с ошибкой: cv2.error: OpenCV (3.4.2). Функция не реализована.). Я использую анаконду. Только два приведенных ниже шага помогли мне решить:

conda remove opencv
conda install -c conda-forge opencv=4.1.0

Если вы используете pip, вы можете попробовать

pip install opencv-contrib-python

Ответ 2

Если вы установили OpenCV с использованием пакета opencv-python pip в любой момент времени, обратите внимание на следующее примечание, взятое из https://pypi.python.org/pypi/opencv-python

ВАЖНОЕ ПРИМЕЧАНИЕВ настоящее время некоторые колеса MacOS и Linux имеют некоторые ограничения:

  • связанная с видео функциональность не поддерживается (не скомпилирована с помощью FFmpeg)
  • например cv2.imshow() не будет работать (не скомпилирован с поддержкой GTK + 2.x или Carbon)

Также обратите внимание, что для установки из другого источника сначала нужно удалить пакет opencv-python

Ответ 3

Не тратьте свое время, пытаясь решить эту проблему, это сделали сами производители. Вместо cv2.imshow() используйте это:

img = cv2.imread('path_to_image')
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()

Ответ 4

Я надеюсь, что этот ответ по-прежнему полезен, несмотря на то, что проблема кажется довольно старой.

Если у вас установлена ​​Anaconda, и ваш OpenCV не поддерживает GTK + (как в этом случае), вы можете просто ввести

conda install -c menpo opencv=2.4.11

Он установит подходящую версию OpenCV, которая не приведет к указанной ошибке. Кроме того, он будет переустанавливать ранее установленный OpenCV, если он был частью Anaconda.

Ответ 5

Перед установкой libgtk2.0-dev и pkg-config или libqt4-dev. Убедитесь, что вы удалили opencv. Вы можете подтвердить это, выполнив импорт cv2 в вашей оболочке python. Если это не удается, установите необходимые пакеты и запустите cmake.