python opencv videowrite ne pas écrire la vidéo
Je viens de commencer la programmation en python avec opencv.
J'ai utilisé la page suivante de opencv 3.0.0 tutoriel
Quand j'ai essayé d'utiliser l'exemple qui enregistre les vidéos, ça ne fonctionne pas.
Il affiche le contenu de la webcam, et crée également un fichier appelé de sortie.avi, mais quand j'ai vérifié la taille de sortie.avi, il était de zéro octets.
J'ai aussi essayé à l'aide de codecs différents, comme YUY2
J'utilise python 2.7.8 et opencv 3.0.0
et windows 8.1
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème et je l'ai résolu en spécifier la résolution de sortie vidéo pour exactement le même que l'entrée:
Bien sûr, assurez-vous que vous avez installé ffmpeg et de travail.
Remplacement:
Avec:
A fonctionné pour moi...
Plus généralement:
Rechercher le code fourcc de la compression vidéo au format que vous êtes après ici, et quel que soit le code est par exemple 'FMP4' pour FFMpeg - branchez-la de la manière suivante:
(*'XVID')
est le même que('X', 'V', 'I', 'D')
Prendre un coup d'oeil à docs.python.org/dev/tutorial/...Assurez-vous que vous utilisez le bon fourcc 4-byte code. L'exemple sur le tutoriel a:
Cette "XVID" code ne peuvent travailler que pour linux. La documentation ci-dessus l'exemple des états (dans le tutoriel):
"Dans Windows: DIVX (en Plus d'être testé et ajouté)." Donc, si vous ne l'avez pas, essayez de remplacer le fourcc ligne ci-dessus avec:
- Je utiliser cv2.VideoWriter sur linux assez souvent et il fonctionne toujours. Donc, si le ci-dessus ne fonctionne pas, vous pouvez toujours essayer sur une machine virtuelle linux.
isColor
drapeau, cependant, vous pouvez vouloir vérifier que vous avez correctement défini à True/False, en tant que de besoin. Cela ne donne pas une exception si vous l'avez configuré de manière incorrecte, vous obtenez juste un "non jouable" de la vidéo. Si cela ne vous aide pas, il se peut que vous deviez installer ffmpeg ou de remplacement sur votre machine.Dans mon cas, j'ai pensé que le codec a été un obstacle, mais il n'était pas. Au lieu de cela, en ajustant les dimensions étant consommé par videoWriter() a fait le tour:
(1280,720) a été utilisé parce que cadre de.la forme de mes sorties vidéo (1280, 720, 3). Il fait avi en mp4 et vice-versa possible. N'avez pas à vous soucier de concilier le codec.
Cela devrait être un problème avec le codec que vous utilisez.
Avez-vous essayé:
cv.CV_FOURCC('i', 'Y', 'U', 'V')
Ce a travaillé pour moi.
Sur windows 7 et à l'aide de Python 2.7 et OpenCV 2.4.8, j'ai expérimenté le fait que si le NOM de fichier est
"output.mpg"
ne voudrais pas écrire.Je l'ai résolu en changeant de
"output.avi"
.J'ai changé la Vidéo écrivain de la taille de la résolution de mon écran de taille et cela a fonctionné.
voici la solution.
J'ai exactement le même problème. Je suis à l'aide d'OpenCV en C++, mais je crois que vous pouvez toujours passer
-1
au lieu de choisir le codec de sorte que vous pouvez avoir un menu déroulant des codecs disponibles même en python. À partir de là, j'ai essayé tous les différents codecs et tout comme Leonard Zhou, leIYUV
codec a été le seul qui a fonctionné pour moi. Notez également qu'il est le seul qui a fonctionné, même si je pouvais utiliser XVID très bien sur une autre machine avec le même code et les mêmes codecs installer.EDIT:
Ce que j'ai proposé a travaillé comme un patch, le principal problème a été résolu sur ma fin, par l'ajout de la
opencv_ffmpeg
dll dans le dossier de l'exécutable.Vérifiez la résolution de vos images!
J'ai essayé avec d'étrange en forme d'images (1284x709) et s'est terminée avec illisible vidéos de 1k en taille. Après le redimensionnement mon image la plus proche du "commun" de la résolution:
image = cv2.resize(image, (1280,720))
,il a très bien fonctionné.