IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Problème de mémoire


Sujet :

OpenCV

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Problème de mémoire
    salut
    je m'explique j'ai un code de opencv qui fonctionne environ 30 secondes puis il s’arrête et affiche le message suivant :"Unhandled exception at 0x756a9673 in test1.exe: Microsoft C++ exception: cv::Exception at memory location 0x0028ef14.."
    je crois que c'est un problème de réinitialisation de mémoire voici mon code

    // test3.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"
    #include <iostream>
    #include <cv.h>
    #include <math.h>
    #include <highgui.h>
    #include <ctime>
    CvCapture *capture;


    IplImage* skipNFrames(CvCapture* capture, int n)
    {
    for(int i = 0; i < n; ++i)
    {
    if(cvQueryFrame(capture) == NULL)
    {
    return NULL;
    }
    }

    return cvQueryFrame(capture);
    }
    int height,width,step,channels;
    int i,j,k;
    int e,r,e0,r0,e1,r1,e2,r2,e3,r3;
    int main(int argc, char *argv[])
    {IplImage* im4;
    IplImage* im7;

    IplImage* im6;
    IplImage* im5;
    IplImage* im0;
    IplImage* ref3;
    IplImage* img;
    IplImage* ref;

    CvScalar scalaire,scalaire2;
    using namespace std;


    img = cvLoadImage("C:/refmasq.jpg", 1);
    ref=cvLoadImage("C:/pip.jpg",1);
    cvSetImageROI(ref, cvRect(416, 293, 43, 57));


    IplImage *ref2 = cvCreateImage(cvSize(43,57),
    ref->depth,
    ref->nChannels);

    cvCopy(ref, ref2, NULL);
    cvResetImageROI(ref);





    CvCapture* capture = cvCaptureFromFile("C:/original.mpg");
    time_t tbegin,tend;
    double texec=0.;

    // Start timer
    tbegin=time(NULL);



    while(cvWaitKey(100)!=' ')
    {im0 = skipNFrames(capture, 25);
    double c3=1000000000,c0=1000000000,c1=1000000000,c2=1000000000;
    for (int p=0; p<50 ; p++)
    {for(int u=0; u<50; u++)
    {cvSetImageROI(im0, cvRect(416+p, 293+u, 43, 57));
    IplImage *ref3 = cvCreateImage(cvSize(43,57),im0->depth,im0->nChannels);
    cvCopy(im0, ref3, NULL);
    double c=cvNorm(ref3,ref2);
    if (c<c0)
    {c0=c;
    e0=p;
    r0=u;
    }
    cvResetImageROI(im0);
    }
    }
    for (int p=0; p<50 ; p++)
    {for(int u=0; u<50; u++)
    {cvSetImageROI(im0, cvRect(416-p, 293+u, 43, 57));
    IplImage *ref3 = cvCreateImage(cvSize(43,57),im0->depth,im0->nChannels);
    cvCopy(im0, ref3, NULL);
    double c=cvNorm(ref3,ref2);
    if (c<c1)
    {c1=c;
    e1=p;
    r1=u;
    }
    cvResetImageROI(im0);
    }
    }
    for (int p=0; p<50 ; p++)
    {for(int u=0; u<50; u++)
    {cvSetImageROI(im0, cvRect(416+p, 293-u, 43, 57));
    IplImage *ref3 = cvCreateImage(cvSize(43,57),im0->depth,im0->nChannels);
    cvCopy(im0, ref3, NULL);
    double c=cvNorm(ref3,ref2);
    if (c<c2)
    {c2=c;
    int e2=u;
    int r2=p;
    }
    cvResetImageROI(im0);
    }
    }
    for (int p=0; p<50 ; p++)
    {for(int u=0; u<50; u++)
    {cvSetImageROI(im0, cvRect(416-p, 293-u, 43, 57));
    IplImage *ref3 = cvCreateImage(cvSize(43,57),im0->depth,im0->nChannels);
    cvCopy(im0, ref3, NULL);
    double c=cvNorm(ref3,ref2);
    if (c<c3)
    {c3=c;
    e3=p;
    r3=u;
    }
    cvResetImageROI(im0);
    }
    }
    double c10=min(min(min(c0,c1),c2),c3);
    if (c10==c0)
    {e=e0;
    r=r0;
    }

    if (c10==c1)
    {e=-e1;
    r=r1;
    }
    if (c10==c2)
    { e=e2;
    r=-r2;
    }

    if (c10==c3)
    {
    e=-e3;
    r=-r3;
    }
    if (e<0 && r<0)
    {for(int i=abs(r); i < im0->width; i++)
    {
    for(int j=abs(e); j < im0->height; j++)
    { scalaire=cvGet2D(im0, j, i);
    //scalaire2=cvGet2D(imgg, j+r , i+e);
    /*
    for(int k=0; k < img->nChannels; k++)
    {//scalaire.val[k]=scalaire2.val[k];
    if((j>520)|(j<340)|((i<cvRound(-0.0037*j*j+0.3*j+847.33)))|((i>cvRound(-0.000272*j*j-1.72*j+1260))))
    {scalaire.val[k] =0;}
    }*/
    cvSet2D(im0, j+e, i+r, scalaire);
    }
    }

    }
    if (e>0 && r<0)
    {for(int i=abs(r); i < im0->width; i++)
    {
    for(int j=e; j < im0->height; j++)
    {scalaire=cvGet2D(im0, j, i);
    //scalaire2=cvGet2D(img, j , i);

    /* for(int k=0; k < img->nChannels; k++)
    {//scalaire.val[k]=scalaire2.val[k];
    if((j>520)|(j<340)|((i<cvRound(-0.0037*j*j+0.3*j+847.33)))|((i>cvRound(-0.000272*j*j-1.72*j+1260))))
    {scalaire.val[k] =0;}
    }*/
    cvSet2D(im0, j-e, i+r, scalaire);
    }
    }
    }

    if (e<0 && r>0)
    {
    for(int i=r; i < im0->width; i++)
    {
    for(int j=abs(e)+1; j < im0->height; j++)
    {scalaire=cvGet2D(im0, j, i);
    //scalaire2=cvGet2D(imgg, j+e , i+r);

    /* for(int k=0; k < img->nChannels; k++)
    { //scalaire.val[k]=scalaire2.val[k];
    if((j>520)|(j<340)|((i<cvRound(-0.0037*j*j+0.3*j+847.33)))|((i>cvRound(-0.000272*j*j-1.72*j+1260))))
    {scalaire.val[k] =0;}
    }*/
    cvSet2D(im0, j+e, i-r, scalaire);
    }
    }
    }
    if (e>0 && r>0)
    {for(int i=r; i < im0->width; i++)
    {
    for(int j=e; j < im0->height; j++)
    {scalaire=cvGet2D(im0, j, i);
    // scalaire2=cvGet2D(imgg, j+e, i+r);

    //for(int k=0; k < img->nChannels; k++)
    //{//scalaire.val[k]=scalaire2.val[k];
    //if((j>520)|(j<340)|((i<cvRound(-0.0037*j*j+0.3*j+847.33)))|((i>cvRound(-0.000272*j*j-1.72*j+1260))))
    //{scalaire.val[k] =0;}
    //}
    cvSet2D(im0, j-e, i-r, scalaire);
    }
    }

    }
    //imgg = cvCreateImage(cvGetSize(im0), im0->depth, 1);
    for(int i=0; i < im0->width; i++)
    {
    for(int j=0; j < im0->height; j++)
    {scalaire=cvGet2D(im0, j, i);
    //scalaire2=cvGet2D(imgg, j, i);

    for(int k=0; k < img->nChannels; k++)
    {
    if((j>520)|(j<340)|((i<cvRound(-0.0037*j*j+0.3*j+847.33)))|((i>cvRound(-0.000272*j*j-1.72*j+1260))))
    {scalaire.val[k] =0;}
    }
    cvSet2D(im0, j, i, scalaire);
    }
    }

    im4 = cvCreateImage(cvGetSize(img), img->depth,1);
    im5 = cvCreateImage(cvGetSize(img), img->depth,1);
    im6 = cvCreateImage(cvGetSize(img), img->depth, 1);
    im7 = cvCreateImage(cvGetSize(img), img->depth, 1);
    cvCvtColor(im0, im5, CV_BGR2GRAY);
    cvCvtColor(img, im4, CV_BGR2GRAY);
    cvAbsDiff(im4,im5,im6);
    cvThreshold(im6,im7,30,255,CV_THRESH_BINARY);
    cvNamedWindow("Ma fenetre", CV_WINDOW_AUTOSIZE);
    cvShowImage("Ma fenetre", im7);
    tend=time(NULL);
    texec=difftime(tend,tbegin);
    fprintf(stderr, "temps : %f\n", texec);
    // fprintf(stderr, "finale : %d\n", c0);
    // cvReleaseImage(& im0);
    cvReleaseImage(& im5);
    cvReleaseImage(& im6);
    cvReleaseImage(& im7);
    cvReleaseImage(& im4);
    // cvReleaseImage(& ref3);

    }

    cvWaitKey(0);
    }

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    147
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2011
    Messages : 147
    Points : 180
    Points
    180
    Par défaut
    Salut,

    Il existe une balise pour mettre du code.
    Sans indentation, c'est vraiment illisible.

Discussions similaires

  1. [WORD]Problème de mémoire
    Par Dnx dans le forum VBA Word
    Réponses: 17
    Dernier message: 05/10/2005, 14h48
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [Crystal Report]Problème de mémoire avec le moteur RDC
    Par sur_uix dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/05/2005, 09h09
  4. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  5. Problème de mémoire Affichage images
    Par Repti dans le forum C++Builder
    Réponses: 6
    Dernier message: 29/03/2004, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo