|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre habitué
![]() |
Bonjour,
Je découvre OpenCV, et redécouvre par la même occasion C++ et Visual studio. Je cherche à convertir une vidéo en plusieurs fichier d'images. Et j'ai un souci sur le cvReleaseImage, celui-ci me lance une exception. Voici mon code Code :
Quelqu'un peut m'expliquer pourquoi ce plantage et comment le résoudre? Est ce que j'utilise correctement l'instance cv::Mat Img ? Merci de votre aide. Cordialement,
__________________
"Nulla Tenaci Invia Est Via" Aux persévérants aucune route n'est interdite |
||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() |
En lisant la doc de OpenCV RetrieveFrame, m'indique que je dois supprimer le cvReleaseImage car je ne dois pas travailler sur l'image de CvRetrieveFrame.
Est ce que j'ai bien compris le principe?
__________________
"Nulla Tenaci Invia Est Via" Aux persévérants aucune route n'est interdite |
|
|
00
|
|
|
#3 |
|
Membre chevronné
![]() Chercheur en informatique Inscription : avril 2008 Messages : 328 ![]() |
Ton problème c'est que tu mélanges C et C++. Débarrasse-toi des fonctions qui commencent par "cv" et remplace les par celles qui commencent par "cv::". Non seulement l'interface C++ est plus clair, mais en plus elle s'occupe de la mémoire pour toi.
Et même si c'est moins important, fprintf devrait être replacé par des std::cout ou std::cerr histoire d’être plus coherent. |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() |
Bonjour,
Merci de ton aide. J'ai suivi ton conseil : Code :
Est ce que j'ai oublié quelque chose qui bloque l'ouverture de la vidéo?
__________________
"Nulla Tenaci Invia Est Via" Aux persévérants aucune route n'est interdite |
||
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Chercheur en informatique Inscription : avril 2008 Messages : 328 ![]() |
Je me souviens avoir eu un problème de ce genre avec les dernières version d'OpenCV: il y a une dll du style ffmpeg.dll qui est nécessaire pour ouvrir les vidéos, mais OpenCV ne se plaint pas si elle n'est pas présente a coté de l’exécutable (alors que les autres, ça fait un message d'erreur direct), et le résultat est que les vidéos ne se chargent pas, même si tout a l'air de fonctionner.
Sinon, pas besoin d'avoir cv::VideoCapture en pointeur, ca passe tres bien en variable 'normale' et ça permet de ne pas faire les grab/retrieve, et de tout simplement faire videoCapture >> image; dans une boucle. Et enfin, pour vérifier si la vidéo est terminée, il ne faut pas vérifier l'adresse de l'image, mais juste vérifier le image.isEmpty(). |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
J'ai fais le test en copiant ffmpeg243.dll seul puis avec les librairies de ffmpeg (avcodec-54.dll, avdevice-54.dll,....)
Je ne peux pas ouvrir les fichiers vidéos.
__________________
"Nulla Tenaci Invia Est Via" Aux persévérants aucune route n'est interdite |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com