Je veux juste convertir la vidéo en images.
Utilisation de ce code simple
import cv2
vidcap = cv2.VideoCapture('gog.mp4')
success,image = vidcap.read()
count = 0
success = True
while success:
success,image = vidcap.read()
print 'Read a new frame: ', success
cv2.imwrite("frame%d.jpg" % count, image)
count += 1
la sortie est
Impossible d'arrêter le flux: ioctl inapproprié pour l'appareil
J'utilise python 2.7.6 sur le serveur ubuntu.
J'ai résolu ce problème sur Ubuntu 16.04.3.
Sudo apt-get install ffmpeg
Sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev
Reconstruisez OpenCV 3.3.0 avec les commandes suivantes:
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -DWITH_QT=OFF -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
make -j7
Sudo make install
Salut j'ai également pris cette erreur et résolu avec ces commandes.
Sudo apt-get install libv4l-dev
cmake -DWITH_LIBV4L=ON .. (this is important)
make && Sudo make install
si une erreur se produit avec la deuxième commande cmake, installez cmake gui.Do première commande: Sudo apt-get install libv4l-dev
Grâce au programme cmakegui, vous pouvez définir des paramètres avec le fichier CmakeVars.txt. Modifiez l'échange de fichiers CmakeVars.txt WITH_LIBV4L = OFF en WITH_LIBV4L = ON et exécutez make && Sudo make install
commande. Pour plus d'informations sur cette erreur, visitez: https://github.com/opencv/opencv/issues/6157
J'ai eu exactement le même problème en utilisant Manjaro 17.0.2 et OpenCV 3.2.0 avec Java. J'ai supprimé l'ancienne implémentation d'OpenCV, suis allé et l'ai réinstallé à partir de zéro. Ran cmake avec ces paramètres cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_LIBV4L=ON ..
(merci @emre)
Ensuite, dans la sortie de l'installation de Cmake, j'ai remarqué Can't find ffmpeg - 'pkg-config' utility is missing
. Installation de pkg-config et réexécution de cmake, make et maintenant tout fonctionne.
Le problème était dû à l'absence de ffmpeg et ffmpeg-devel. Vous pouvez le vérifier dans la sortie cmake.
Si FFMPEG n'est pas disponible, ces OUI deviendront NON. Et si vous compilez et installez l'opencv sans FFMPEG, vous obtiendrez l'erreur "Impossible d'arrêter le flux: ioctl inapproprié pour le périphérique" pour les échantillons liés à la vidéo.
Pour résoudre votre problème, installez ffmpeg et ffmpeg-devel, puis "make" et "make install" à nouveau.
J'espère que cela t'aides.
J'utilise Linux Mint et la programmation en C++. J'applique la même procédure de https://stackoverflow.com/a/45893821/11247666 . C'est:
Sudo apt-get install ffmpeg
Sudo apt-get install libavcodec-dev libavformat-dev libavdevice-dev
cd opencv-3.3.0
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -DWITH_QT=OFF -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
make -j7
Sudo make install
Mais après ça. Le problème n'a pas pu être résolu. J'ai cette erreur:
Erreur non spécifiée (la fonction n'est pas implémentée. Reconstruisez la bibliothèque avec le support Windows, GTK + 2.x ou Carbon. Si vous êtes sur Ubuntu ou Debian, installez libgtk2.0-dev et pkg-config, puis relancez cmake ou configurez le script ) dans cvNamedWindow.
J'applique ce qui suit
Sudo apt-get install libgtk2.0-dev
Sudo apt-get install pkg-config
Après cela, j'ai appliqué cette même procédure:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=ON -D WITH_TBB=ON -D WITH_GTK=ON -D WITH_V4L=ON -D WITH_OPENGL=ON -D WITH_CUBLAS=ON -DWITH_QT=OFF -DCUDA_NVCC_FLAGS="-D_FORCE_INLINES" ..
make -j7
Sudo make install
Ce qui précède a fonctionné pour moi.