web-dev-qa-db-fra.com

Erreur OpenCV: la fonction n'est pas implémentée

J'essaie de faire fonctionner OpenCV avec Python sur ma machine Ubuntu. J'ai téléchargé et installé OpenCV, mais lorsque j'essaie d'exécuter ce qui suit python code (qui devrait capturer les images d'une webcam et les pousser vers l'écran)

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()

J'obtiens l'erreur suivante:

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

Donc, je fais ce qu'ils demandent: installer les packages, déplacer vers le dossier d'où j'ai installé OpenCV et exécuter

Sudo make uninstall
make
Sudo make install

Mais lorsque j'essaie d'exécuter le python, cela me donne la même erreur. Suis-je en train de manquer quelque chose?

38
Dan

Si cela vous donne des erreurs avec gtk, essayez qt.

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

Si cela ne fonctionne pas, il existe un moyen facile de s'en sortir.

Sudo apt-get install libopencv-*

Cela téléchargera toutes les dépendances requises (bien qu'il semble que toutes les bibliothèques requises soient installées, mais vous pouvez toujours l'essayer une fois). Cela installera probablement OpenCV 2.3.1 (Ubuntu 12.04). Mais puisque vous avez OpenCV 2.4.3 dans /usr/local/lib inclure ce chemin dans /etc/ld.so.conf et faites ldconfig. Alors maintenant, chaque fois que vous utilisez OpenCV, vous utilisez la dernière version. Ce n'est pas la meilleure façon de le faire, mais si vous rencontrez toujours des problèmes avec qt ou gtk, essayez ceci une fois. Cela devrait fonctionner.

Mise à jour - 18 juin 2019

J'ai eu cette erreur sur mon système Ubuntu (18.04.1 LTS) pour openCV 3.4.2, comme l'appel de méthode à cv2.imshow échouait. J'utilise anaconda. Juste les 2 étapes ci-dessous m'ont aidé à résoudre:

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

Si vous utilisez pip, vous pouvez essayer

pip install opencv-contrib-python
28
Froyo

Si vous avez installé OpenCV à l'aide du package pip opencv-python à tout moment, soyez conscient de la note suivante, tirée de https://pypi.python.org/pypi/opencv-python

REMARQUE IMPORTANTE Les roues MacOS et Linux ont actuellement certaines limitations:

  • la fonctionnalité liée à la vidéo n'est pas prise en charge (non compilée avec FFmpeg)
  • par exemple cv2.imshow() ne fonctionnera pas (non compilé avec GTK + 2.x ou le support Carbon)

Notez également que pour installer à partir d'une autre source, vous devez d'abord supprimer le package opencv-python

30
Nic Szerman

Ne perdez pas votre temps à essayer de résoudre ce problème, cela a été précisé par les fabricants eux-mêmes. Au lieu de cv2.imshow() utilisez ceci:

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()
19
purna15111

J'espère que cette réponse est toujours utile, malgré le problème semble être assez ancien.

Si Anaconda est installé et que votre OpenCV ne prend pas en charge GTK + (comme dans ce cas), vous pouvez simplement taper

conda install -c menpo opencv=2.4.11

Il installera une version OpenCV appropriée qui ne produit pas l'erreur mentionnée. En outre, il réinstallera OpenCV précédemment installé s'il y en avait un dans Anaconda.

8
Artem S

Avant d'installer libgtk2.0-dev et pkg-config ou libqt4-dev. Assurez-vous que vous avez désinstallé opencv. Vous pouvez le confirmer en exécutant import cv2 sur votre shell python. En cas d'échec, installez les packages nécessaires et réexécutez cmake.

1
user618677