'da basit video akışında bellek sızıntısı Sadece en basit video akışını yapmak bile benim için bir bellek sızıntısına neden oluyor. Anlaşılan kitabında "Öğrenme OpenCV" göre OpenCV 2.1 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);
}
, bunu "Ben yaparsam sorunları bekliyoruz" olabilir OpenCV ve I tarafından yönetilen bu yana "çerçeve" serbest bırakmak için yasak. CvQueryFrame çağrıldığında çerçeve işaretçisini serbest bıraksam gerçekten sorunlara neden olur. Kitap aynı zamanda cvQueryFrame'in başka bir yerde çalışması için cvQueryFrame tarafından işaret edilen görüntünün kopyalanmasını önerir çünkü cvQueryFrame muhtemelen aynı bellek yığınının tekrar tekrar tekrar geri dönmesini sağlar. Bu nedenle her çerçeve döngüsünün sonunda serbest bıraktığım wrkImage. Program birkaç dakika sonra çöküyor ve çılgınlık gibi hafıza sızıntısı! Tüm çerçeveler gibi büyük bir şeyin sızan olduğuna inanıyorum. Birisi video için Mac’te OpenCV 2.1’i kullanıp kullanmadığımı merak ediyorum ve bunun bir sorun olduğunu da fark ettim. Ya da benim kodumda eksik olduğum bir boşluk görebilir.
OpenCV guru'larının önerileri, çok takdir edilecektir!
Düzenleme: Programa dikkatlice adım attıktan ve belleği inceledikten sonra, sorunun cvShowImage() ile olduğundan şüpheleniyorum. cvShowImage, bir çerçevenin geri kazanılmış gibi görünmeyen bir bellek değerine tahsis ediyor gibi görünüyor. Sonra şüphelerime katılıyormuş gibi görünen bu bağlantıyı OpenCV cvShowImage Memory Leaks OSX buldum. Burada bir çözüme yakın olabilir ... Sadece deli olmadığımı gördüğüme sevindim!
GÜNCELLEME: Macports OpenCV şu anda gayet iyi (ve birkaç aydır var. Sadece burada yayınlamam gerektiğini düşündüğüm için insanlar MacCalls'ı OpenCV build/install'ları için kullanmama konusunda cesaret kırmıyorlar. OpenCV yüklemek için bir yol.
Oh ve OpenCV 2.1'in Mac Port'lar yüklemesini kullanıyorum 2 hafta önce yükledim – wallacer