J'ai construit mon propre paquet python opencv à partir des sources.
Video I/O: DC1394: NO FFMPEG: NO avcodec: NO avformat: NO avutil: NO swscale: NO avresample: NO GStreamer: NO libv4l/libv4l2: NO v4l/v4l2: linux/videodev2.h
imprime: 3.4.5
Maintenant, le problème auquel je suis confronté concerne l'utilisation de gstreamer de la classe VideoCapture d'opencv. J'essaie d'obtenir cet exemple de travail minimum fonctionnant sur python3
import cv2 print(cv2.getBuildInformation())
La capture échoue, produisant mon impression ci-dessus (voir l'instruction if
). J'ai vérifié:
cap = cv2.VideoCapture("videotestsrc ! appsink") if not cap.isOpened(): print("Cannot capture test src. Exiting.") quit() while True: ret, frame = cap.read() if ret == False: break cv2.imshow("CVtest",frame) if cv2.waitKey(1) & 0xFF == ord('q'): break
imprime:
import cv2 print(cv2.__version__)
Voyant cela, il était absolument logique que mon pipeline gstreamer ne fonctionne pas . Je me suis assuré que WITH_GSTREAMER était réglé sur ON lors de la ccmake d'OpenCV (ce qu'il était déjà). Toujours le problème maintenu. J'ai même essayé de définir WITH_GSTREAMER_0_10 sur ON également. Toujours pas de chance d'avoir gstreamer activé à partir du module python cv2.
Avant que quiconque suggère d'utiliser pip3 pour installer cv2. J'ai essayé ça aussi. Le problème avec l'obtention du package à partir de pip est qu'il ne vous permet pas du tout de configurer le support de gstreamer.
Quelqu'un peut-il fournir de l'aide ici?
3 Réponses :
J'ai pu résoudre le problème, avec un peu d'aide du forum de support opencv . L'examen de la sortie de cmake indique le problème:
Video I/O: DC1394: NO FFMPEG: NO avcodec: NO avformat: NO avutil: NO swscale: NO avresample: NO GStreamer: base: YES (ver 1.8.3) video: YES (ver 1.8.3) app: YES (ver 1.8.3) riff: YES (ver 1.8.3) pbutils: YES (ver 1.8.3) libv4l/libv4l2: NO v4l/v4l2: linux/videodev2.h
Pendant ccmake, j'avais défini à la fois WITH_GSTREAMER et WITH_GSTREAMER_0_10 sur ON. Il semble que cmake préfère l'indicateur gstreamer0.10 à celui de gstreamer1.0. Comme je n'ai installé que gstreamer1.0, opencv a complètement échoué à configurer les dépendances gstreamer.
Je me suis assuré de fouetter tous les binaires précédemment déployés:
import cv2 print(cv2.getBuildInformation())
Ensuite, j'ai simplement réinstallé, avec les paramètres ajustés (compte tenu de mes connaissances ci-dessus): p>
ccmake .. make -j8 sudo make install
quand je
cd <opencv-src>/build sudo make uninstall
ma console affiche maintenant
-- Checking for module 'gstreamer-base-0.10' -- No package 'gstreamer-base-0.10' found -- Checking for module 'gstreamer-video-0.10' -- No package 'gstreamer-video-0.10' found -- Checking for module 'gstreamer-app-0.10' -- No package 'gstreamer-app-0.10' found -- Checking for module 'gstreamer-riff-0.10' -- No package 'gstreamer-riff-0.10' found -- Checking for module 'gstreamer-pbutils-0.10' -- No package 'gstreamer-pbutils-0.10' found
En bout de ligne, ne définissez pas WITH_GSTREAMER_0_10 sur ON pendant cmake, si vous voulez réellement gstreamer1.0. Dans ce cas, vous ne devez activer WITH_GSTREAMER ON
Pour ceux qui sont aux prises avec le même problème sous Windows ... J'ai dû définir les options CMake suivantes:
Ma version OpenCV: 3.4.3
L'installation des packages libgstreamer1.0-dev
et libgstreamer-plugins-base1.0-dev
m'a aidé à résoudre ce problème.
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
Comment installer DC1394 dans opencv-python version 4.1.2? Sans CAP_DC1394, je ne peux pas définir la taille de la mémoire tampon pour ma caméra IP.