J'ai donc suivi ce tutoriel mais il ne semble rien faire. Rien du tout. Il attend quelques secondes et ferme le programme. Quel est le problème avec ce code?
import cv2
vidcap = cv2.VideoCapture('Compton.mp4')
success,image = vidcap.read()
count = 0
success = True
while success:
success,image = vidcap.read()
cv2.imwrite("frame%d.jpg" % count, image) # save frame as JPEG file
if cv2.waitKey(10) == 27: # exit if Escape is hit
break
count += 1
En outre, dans les commentaires, il est dit que cela limite les images à 1000? Pourquoi?
EDIT: J'ai essayé de faire d' success = True
abord mais cela n'a pas aidé. Il n'a créé qu'une seule image de 0 octet.
python
python-2.7
opencv
GShocked
la source
la source
success
?True
ouFalse
?print success
quelque part.success
; si c'est faux, cela signifie que la lecture de la vidéo a échoué pour une raison quelconque. Vous devez d'abord faire fonctionner ce petit morceau.brew install opencv --python27 --ffmpeg
si vous utilisez une version différente de Python, vous devrez la changer pour votre version.Réponses:
De là, téléchargez cette vidéo afin que nous ayons le même fichier vidéo pour le test. Assurez-vous d'avoir ce fichier mp4 dans le même répertoire de votre code python. Ensuite, assurez-vous également d'exécuter l'interpréteur python à partir du même répertoire.
Puis modifiez le code, fossé
waitKey
qui perd du temps également sans fenêtre, il ne peut pas capturer les événements du clavier. Nous imprimons également lasuccess
valeur pour nous assurer qu'elle lit correctement les images.Comment ça se passe?
la source
Read a new frame: False
Pour prolonger cette question (& réponse par @ user2700065) pour un cas légèrement différent, si quelqu'un ne veut pas extraire chaque image mais veut extraire une image toutes les secondes. Ainsi, une vidéo d'une minute donnera 60 images (images).
la source
opencv-2.4.9
, donc au lieu decv2.CAP_PROP_POS_MSEC
je devais utilisercv2.cv.CAP_PROP_POS_MSEC
count = count + 5
cv2.imwrite()
au début de la boucle puisque vous avez appelécv2.imread()
avant la boucle?Ceci est un ajustement de la réponse précédente pour python 3.x de @GShocked, je le posterais dans le commentaire, mais je n'ai pas assez de réputation
la source
C'est une fonction qui convertira la plupart des formats vidéo en nombre d'images présentes dans la vidéo. Cela fonctionne
Python3
avecOpenCV 3+
Il prend en charge
.mts
et les fichiers normaux comme.mp4
et.avi
. Essayé et testé sur des.mts
fichiers. Fonctionne comme un charme.la source
Après de nombreuses recherches sur la façon de convertir des images en vidéo, j'ai créé cette fonction, j'espère que cela vous aidera. Nous avons besoin d'opencv pour cela:
changer la valeur de fps (images par seconde), le chemin du dossier d'entrée et le chemin du dossier de sortie en fonction de vos propres emplacements locaux
la source
Les réponses précédentes ont perdu la première image. Et ce sera bien de stocker les images dans un dossier.
À propos, vous pouvez vérifier le taux de trame par VLC. Allez dans Windows -> informations sur les médias -> détails du codec
la source
cv.CAP_PROP_POS_AVI_RATIO
, mais je ne sais pas comment. tnxCe code extrait les images de la vidéo et enregistre les images au format .jpg
la source
J'utilise Python via le logiciel Spyder d'Anaconda. En utilisant le code original listé dans la question de ce fil par @Gshocked, le code ne fonctionne pas (le python ne lira pas le fichier mp4). J'ai donc téléchargé OpenCV 3.2 et copié "opencv_ffmpeg320.dll" et "opencv_ffmpeg320_64.dll" à partir du dossier "bin". J'ai collé ces deux fichiers dll dans le dossier "Dlls" d'Anaconda.
Anaconda a aussi un dossier "pckgs" ... J'ai copié et collé le dossier "OpenCV 3.2" entier que j'ai téléchargé dans le dossier "pckgs" d'Anaconda.
Enfin, Anaconda a un dossier "Library" qui a un sous-dossier "bin". J'ai collé les fichiers «opencv_ffmpeg320.dll» et «opencv_ffmpeg320_64.dll» dans ce dossier.
Après avoir fermé et redémarré Spyder, le code a fonctionné. Je ne sais pas laquelle des trois méthodes a fonctionné, et je suis trop paresseux pour revenir en arrière et le comprendre. Mais ça marche, bravo!
la source
Cette fonction extrait les images de la vidéo avec 1 fps, EN PLUS, elle identifie la dernière image et arrête également la lecture:
la source
Le script suivant extraira les images toutes les demi-secondes de toutes les vidéos du dossier. (Fonctionne sur python 3.7)
la source