Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Memory leak Problem mit OpenCV

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
16.06.2008, 18:56 Uhr
KOR



Hi ich habe mir mit OpenCV ein gigantisches Memoryleak erstellt ^^ wie man im folgenden code sieht. Mein Problem ist ich wollte es jetzt beseitigen mit cvReleaseImage(&imagepointer) aber wenn ich das tue stürzt das Prog bei der ersten forschleife ab. kann mir jemand helfen.

C++:
void pictureloop(CvCapture* capture,int n_pics,double threshold)
{
    for(int i=0;i<n_pics;i++)
    {
        IplImage *img=takepicture(capture,debug,visual,i);                // create img and write frame to img
        IplImage *gray_img=convert_img_togray(img,debug,visual);
        IplImage *bin_img =convert_img_tobin(gray_img,threshold);
        int s_letter=0;
        int m_letter=0;
        int l_letter=0;
        int dostuff=contoureval(bin_img);
    }
}



THX4UrF1
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.06.2008, 12:29 Uhr
KOR



Ich habe nochmal ein besseres beispiel geschrieben:

C++:

#include "stdafx.h"

#include <cv.h>
#include <cvaux.h>
#include <cxcore.h>
#include <highgui.h>

#include <iostream>
#include <string>
using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
    CvCapture* capture = cvCaptureFromCAM(0);
    if(!cvGrabFrame(capture)){                                        
        printf("Could not grab a frame\n\7");
        exit(0);
    }
    cvNamedWindow( "Input", 1);
    IplImage* img =cvRetrieveFrame(capture);                        // retrieve the captured frame
    cvShowImage("Input",img);
    cvWaitKey(1);
    cvReleaseImage(&img);

    return 0;
}



kann mir jemand damit helfen ich bin gerade am verzweifeln. Wenn ich das cvReleaseImage(&img); weglasse läuft das programm aber da das ganze in ner Schleife 10-20 bilder die minute macht habe ich nach 1000 bildern meinen arbeitsspeicher bis zum anschlag voll.

Dieser Post wurde am 17.06.2008 um 12:29 Uhr von KOR editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.06.2008, 13:12 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


Hi,

schau mal hier: http://tharinduj.blogspot.com/2007/10/capturing-image-from-web-cam.html

das hab ich auf die Frage hin gefunden. wenn ich das richtig verstehe, erzeugt GrabFrame einen Puffer, und RetrieveFrame liefert dir nur einen Zeiger darauf zurück, wenn du nun ReleaseImage aufrufst, killst du ihm seinen Internen speicher, was zu deinem Problem führt
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.06.2008, 14:47 Uhr
KOR



vielen dank mit cvQueryFrame hab ich keinen memoryleak mehr.
THX
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: