Anche solo lo streaming video di base causa una perdita di memoria per me.OpenCV 2.1 Perdita di memoria su streaming video semplice su Mac OSX
cvNamedWindow("1",0);
CvCapture *fc = cvCaptureFromCAM(0);
IplImage *frame = NULL;
CvSize frameSize;
frameSize.height = cvGetCaptureProperty(fc, CV_CAP_PROP_FRAME_HEIGHT);
frameSize.width = cvGetCaptureProperty(fc, CV_CAP_PROP_FRAME_WIDTH);
while (1) {
IplImage *wrkImage = NULL;
frame = cvQueryFrame(fc);
if (!frame)
break;
wrkImage = cvCreateImage(frameSize, IPL_DEPTH_8U, 3);
cvCopy(frame, wrkImage, NULL);
cvShowImage("1", wrkImage);
char c = cvWaitKey(33);
if (c == 27) {
break;
}
cvReleaseImage(&wrkImage);
}
A quanto pare secondo il libro "Learning OpenCV", io non dovrei rilasciare "frame" dal momento che è gestito da OpenCV e posso "aspettarsi problemi se lo faccio". In effetti causa problemi se rilascio il puntatore del frame dopo aver chiamato cvQueryFrame. Il libro suggerisce anche di copiare l'immagine puntata da cvQueryFrame altrove per lavorarci sopra poiché cvQueryFrame ricicla presumibilmente lo stesso blocco di memoria ripetutamente. Quindi wrkImage che rilascio alla fine di ogni ciclo di frame. Il programma si interrompe dopo alcuni minuti e perde memoria come un matto! Mi porta a credere che qualcosa di importante viene fatto trapelare come interi fotogrammi. Mi chiedo se qualcuno usa OpenCV 2.1 sul Mac per i video e ha riscontrato che questo è un problema. O se qualcuno può vedere un buco nel mio codice che mi manca.
Qualche consiglio da parte del guru di OpenCV è molto apprezzato!
Modifica: dopo aver esaminato attentamente il programma ed esaminato la memoria, ho il sospetto che il problema sia con cvShowImage(). cvShowImage sembra allocare circa il valore di memoria di un frame che non sembra mai essere recuperato. Quindi ho trovato questo link OpenCV cvShowImage Memory Leaks OSX che sembra essere d'accordo con i miei sospetti. Potrebbe essere vicino a una soluzione qui ... Sono felice di vedere che non sono pazzo!
AGGIORNAMENTO: Macports OpenCV ora funziona bene (e lo è stato per alcuni mesi. Ho pensato che avrei dovuto postarlo qui in modo che le persone non si scoraggino dall'usare Macports per la loro installazione/installazione di OpenCV. modo per installare OpenCV.
Oh e sto usando l'installazione di OpenCV 2.1 di Mac Ports che ho installato 2 settimane fa – wallacer