Précédent   Forum du club des développeurs et IT Pro > C et C++ > Bibliothèques > OpenCV
OpenCV Vos questions sur l'API de traitement d'images OpenCV.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 17/10/2012, 22h25   #1
gigi_dev
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : septembre 2012
Messages : 25
Points : 12
Points : 12
Par défaut Comment sauvegader un ensemble de frames ?

j'ai besoin de sauvegarder un ensemble de frame a partir d'un video.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include "highgui.h"
#include "cv.h"
using namespace std;
 
int main()
{
    CvCapture *capture=cvCaptureFromAVI("video2.avi");
    double nbFrames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);
    cout<<"nombre de frames  "<<nbFrames<<endl;
    if (!capture) {
 
        cout<<"Ouverture du flux vidéo impossible !\n"<<endl;
        cout<<capture<<endl;
        return 1;
 
    }
    cvNamedWindow("Analyse de la marche", CV_WINDOW_AUTOSIZE);
    IplImage** list = new IplImage*[15];
    IplImage *image;
    for(int i=0;i<=15;i++)
    {
        image=cvQueryFrame(capture);
        list[i] = cvCreateImage(cvGetSize(image), image->depth, 3);
        cvCopy(image,list[i]);
 
    }
 
    for(int i=0;i<15;i++)
    {
        cvShowImage("Analyse de la marche",list[i]);
        cvWaitKey();
    }
   /* cvDestroyWindow("Analyse de la marche");
 
    cout<<"affiche de frame 99"<<endl;
    cvWaitKey(10);*/
    return(0);
}
lorsque j'execute ce code il m'affiche pas les frames mais il m'affiche
Citation:
Segmentation fault (core dumped)
gigi_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 00h28   #2
Winjerome
Modérateur
 
Avatar de Winjerome
 
Homme Jérôme
Inscription : septembre 2009
Messages : 5 193
Détails du profil
Informations personnelles :
Nom : Homme Jérôme
Âge : 25
Localisation : France, Pyrénées Atlantiques (Aquitaine)

Informations forums :
Inscription : septembre 2009
Messages : 5 193
Points : 12 724
Points : 12 724
Bonsoir,
Winjerome est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 11h17   #3
math_lab
Membre chevronné
 
Homme
Chercheur en informatique
Inscription : avril 2008
Messages : 328
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Chercheur en informatique

Informations forums :
Inscription : avril 2008
Messages : 328
Points : 620
Points : 620
Pourquoi utiliser l'interface C d'OpenCV alors que vous programmez en C++ ? Ça n'est qu'une grosse source d'erreurs au niveau de la gestion de la mémoire (en plus d’être moche).

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
	cv::VideoCapture capture(videoName);
	cv::Mat frame;
	do
	{
		capture >> frame;
		if(frame.empty()) break;
 
		cv::imwrite(outoutImageName, frame);
 
		cv::imshow("Image", frame);
		cv::waitKey(1);
	} while( !frame.empty() );
}
C'est quand même un peu plus simple, non ?
math_lab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2012, 16h57   #4
gigi_dev
Candidat au titre de Membre du Club
 
Inscription : septembre 2012
Messages : 25
Détails du profil
Informations personnelles :
Localisation : Canada

Informations forums :
Inscription : septembre 2012
Messages : 25
Points : 12
Points : 12
grand merci,Malgre que ce que tu as dit ne cause pas de probleme de memoire, mais le proble est cause par la petite erreur au niveau de la boucle et pour cela j'ai dit grand merci a Winjerome.
gigi_dev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 04h20.


 
 
 
 
Partenaires

Hébergement Web