Pourquoi ne puis-je pas ouvrir la vidéo avi dans openCV?
Que je viens de mettre une vidéo simple exemple de lecture avec openCV2.3.1, mais il semble que je ne peut pas ouvrir avi vidéo en tout cas 🙁
VideoCapture capture("guitarplaying.avi");
if(!capture.isOpened()){
std::cout<<"cannot read video!\n";
return -1;
}
Mat frame;
namedWindow("frame");
double rate = capture.get(CV_CAP_PROP_FPS);
int delay = 1000/rate;
while(true)
{
if(!capture.read(frame)){
break;
}
imshow("frame",frame);
if(waitKey(delay)>=0)
break;
}
capture.release();
J'ai fait un point d'arrêt dans std::cout<<"cannot read video!\n"
et de trouver qu'il s'est arrêté ici à chaque fois. Alors, pourquoi la vidéo avi ne peut pas être ouvert? Merci!
- AVI est un format de fichier, pas un format vidéo. Vous devez donc vérifier que la vidéo est encodée dans un format vidéo supporté, comme un fichier AVI peut être codé de manière différente.
Vous devez vous connecter pour publier un commentaire.
1)
Assurez-vous que le fichier vidéo est en fait dans le même dossier que l'application (je suis en supposant que vous avez déjà essayé ce), de spécifier le chemin d'accès absolu.
2)
Si vous êtes sur Windows, vous pouvez avoir besoin d'un pack de codecs pour lire le fichier vidéo (par exemple, K-Lite Codec Pack).
Comme Macmade suggéré, AVI est simplement un conteneur qui peut accueillir différentes audio, vidéo, ou même de sous-titrage codecs. Aussi, ici sont Zeranoe de FFmpeg versions pour Windows. Vous pouvez obtenir de plus amples informations sur votre fichier codec contenu si vous procédez de la manière suivante:
Vous devriez voir une sortie qui ressemble à ceci:
Donc, comme vous pouvez le voir .conteneur mp4 a un H. 264 codec vidéo et le codec audio AAC.
Un manque d'OpenCV est ffmpeg.dll ne pas générer des avertissements/erreurs dans OpenCV 2.3.1, et le code échoue silencieusement. Assurez-vous que vous avez une opencv_ffmpeg*.dll dans votre chemin.
opencv\build\..\bin
d'où vous avez extrait opencv à votre chemin d'accès.Peut-être vous chargez le mauvais fichier lib.Tout comme moi,je reçois le même problème.Mais je peux ouvrir un fichier AVI en VC6.0 qui utilisent le opencv la version 1.0.Enfin,je trouve que j'utilise le mauvais lib.
En Mode Debug,mais j'utilise
opencv_core220.lib
etopencv_highgui220.lib
.Et je les remplacer avecopencv_core220d.lib
etopencv_highgui220d.lib
.Maintenant, je peux le lire.Dans OpenCV 2.4.4 : il n'est qu'opencv_ffmpeg244.dll (version dll) et de ne pas opencv_ffmpeg244d.dll (dll de débogage)
Donc, essayez de libérer mode de compilation !
Je rencontre également le même problème. Avec l'exemple de code pour VideoCapture, mon visual studio programme n'a pas pu ouvrir n'importe quel fichier vidéo. Alors, la suggestion de nimcap fonctionne pour moi. "Un manque d'OpenCV est ffmpeg.dll ne pas générer des avertissements/erreurs dans OpenCV 2.3.1, et le code échoue silencieusement. Assurez-vous que vous avez une opencv_ffmpeg*.dll dans votre chemin."
Solution: Copier opencv_ffmpeg.dll à mon projet visual studio
/Debug
dossier, je peux ouvrir presque n'importe quel fichier vidéo avec VideoCapture.Sous Windows x64, vous n'avez pas à renommer quoi que ce soit. Il suffit de mettre la suite ...\opencv\build\x64\vc12\bin dans votre CHEMIN.
Il suffit de changer votre code à partir de ce:
à ceci:
Je suis juste en ajoutant à cela depuis que j'ai passé plus de temps que je ne voudrais l'admettre. N'étant pas en mesure d'ouvrir le fichier causé une tonne d'étrange exceptions.
Si vous trouvez que les chemins d'accès absolus de travail, tandis que les chemins relatifs ne fonctionne pas, une autre chose à vérifier est de faire en sorte que le répertoire de travail correctement.
Dans Visual Studio c'est les Propriétés du Projet (Propriétés de Configuration) -> Débogage -> Répertoire de Travail. J'ai trouvé le mien réglé sur "$(ProjectDir)" par défaut quand j'ai vraiment voulu "$(OutDir)".
Vous avez juste besoin de télécharger pour votre machine Xvid de xvid.org c'est tout: http://www.xvid.org/Downloads.15.0.html
Ouvrir
D:\OpenCV\build\x64\vc14\bin
et copier leopencv_ffmpeg320.dll
ouopencv_ffmpeg320_64.dll
, ce qui est pertinent pour vous en fonction de votreWindows (x86 or x64)
.opencv_ffmpeg320.dll
-> pour32-bit Windows (x86)
opencv_ffmpeg320_64.dll
-> pour64-bit Windows (x64)
Copiez le
.dll
àC:\Python27\
ou n'importe quel emplacement accessible par WindowsPATH
variables d'environnement.Alternativement, vous pouvez créer un dossier
D:\OpenCV\vendor\
et ajouter.dll
fichier dans ce dossier, puis ajouterD:\OpenCV\vendor\
à votrewindows environment variables
.Si vous utilisez Ubuntu, 16+, vous pouvez essayer ceci: