OpenCV videoWriter problème de codec
Je suis en train d'écrire une vidéo dans OpenCV dans Windows et je suis de la réunion de diverses questions au moment de choisir les codecs. Je ne suis pas sûr si c'est quelque chose dans mon code ou je n'ai pas les codecs nécessaires. Le code est:
int main(int argc, char ** argv){
VideoCapture inputVideo("LFW.mp4");
Mat inputFrame, outputFrame;
VideoWriter outputVideo;
if (!inputVideo.isOpened()){
std::cout << "!!! Input video could not be opened" << std::endl;
return 1;
}
int ex = static_cast<int>(inputVideo.get(CV_CAP_PROP_FOURCC));
const string name = "Output.mp4";
Size size = Size((int) inputVideo.get(CV_CAP_PROP_FRAME_WIDTH), (int) inputVideo.get(CV_CAP_PROP_FRAME_HEIGHT));
outputVideo.open(name, CV_FOURCC('M','P','4','2'), inputVideo.get(CV_CAP_PROP_FPS), size, true);
if (!outputVideo.isOpened()){
std::cout << "!!! Output video could not be opened" << std::endl;
return 2;
}
return 0;
}
Le code continue de sortir avec le code 2, donc la videoWriter objet n'est pas heureux avec sa configuration.
Je pense que openCV ne peut écrire .les fichiers avi. J'ai essayé d'écrire .fichier mp4 avec python, sans succès
OriginalL'auteur Rupert Cobbe-Warburton | 2013-11-30
Vous devez vous connecter pour publier un commentaire.
J'ai un problème avec de nombreux codecs sur windows. J'ai installé ffmpeg correctement, mais il ya encore un problème avec de nombreux formats de vidéo.
Essayer celui-ci CV_FOURCC('W', 'M', 'V', '2')
WMV est terrible format mais fonctionne parfaitement pour moi. Je travaille avec Visual Studio 2015 et mon propre build de Opencv 3.0.0.
Dans Opencv 3.0.0, je peux vous recommandons fortement d'inclure aussi
Il est anoter recommandation. Vérifiez la taille de l'entrée vidéo et la taille de VideoWriter. CV_CAP_PROP_FRAME_WIDTH et CV_CAP_PROP_FRAME_HEIGHT, dans certains cas, le retour des valeurs erronées. Vérifier à la fois des tailles avant la vidéo.écrire(Mat)
Vous pouvez vérifier votre vidéo écrivain par cette boucle.
Définissez votre écrivain tailles mannequin constante.
Taille SizeOfFrame = cv::Size( 800, 600);
VideoWriter vidéo("Résultat.wmv", CV_FOURCC('W', 'M', 'V', '2'), 30, SizeOfFrame, true);
En boucle vidéo redimensionner (extrait de la vidéo à la même taille que l'écrivain. Si cela n'était pas votre installation est probablement faux.
Mon Tutoriel ici
OriginalL'auteur globalex
Il n'est pas rare que les gens ont codec problèmes lorsque vous travaillez avec des VideoCapture et VideoWriter. (Moins un autre problème commun est que OpenCV a été compilé sans codeur (comme l'utilisation de
WITH_FFMPEG=NO
ouWITH_VFW=NO
lors de la compilation d'OpenCV) )Je voudrais essayer les choses suivantes disséquer le problème (commandé par le niveau de tracas impliqués 🙂 ):
Essayez d'exécuter le même programme mais en passant
-1
au lieu deCV_FOURCC('M','P','4','2')
comme deuxième argumentoutputVideo.open()
. Vous obtiendrez alors une fenêtre pop-up vous demandant de sélectionner le codec et peut alors voir ceux qui OpenCV trouve.Si cela ne vous aide pas utiliser un débogueur pour l'étape dans outputVideo.open(). Vous peut arriver à une fonction vide (
#ifdef
ed à l'écart en raison de certains macro préprocesseur). Malheureusement, il vous faudra avoir un debug-compilé OpenCV avec pdb fichiers pour faire cela correctement.Aussi, je ne reçois pas de fenêtre pop-up si j'ai mis un -1 dans le deuxième argument. Je suis en cours d'exécution sur Windows.
OriginalL'auteur kamjagin