Ejecutando la aplicación OpenCV durante mucho tiempo

Tengo una aplicación openCV que rastrea 3 colores diferentes y dibuja líneas entre donde está rastreando. Tengo que mantener esta aplicación funcionando durante unas horas, pero después de unos 40 minutos me dice que mi El disco de inicio de mac osx no tiene más espacio disponible para la memoria de la aplicación. ¿Hay alguna manera de vaciar la memoria para que pueda seguir funcionando?

IplImage* imgYellowThresh1 = GetThresholdedImage1(frame,1);

double moment10 = cvGetSpatialMoment(moments_yellow, 1, 0);
double moment01 = cvGetSpatialMoment(moments_yellow, 0, 1);
double area = cvGetCentralMoment(moments_yellow, 0, 0);

así que hago esto para otros 2 colores, luego lo agrego al marco

cvReleaseImage(&imgYellowThresh1);
delete moments_yellow;

preguntado el 11 de septiembre de 13 a las 14:09

Debe tener una pérdida de memoria en su código. No hay problema en ejecutar la aplicación durante mucho tiempo a menos que asigne memoria todo el tiempo (cvCreateImage) que luego no liberas (cvReleaseImage). -

Es muy probable que tenga una pérdida de memoria debido a una gestión de memoria manual inexacta. A menos que ya tenga demasiado código escrito en este estilo, recomendaría reescribirlo usando cv::Mat IplImage, ya que este último es considerado obsoleto. cv::Mat, por otro lado, es una representación de imagen de nuevo estilo que tiene una excelente gestión de memoria basada en RAII. Esto debería reducir drásticamente la cantidad de posibles problemas relacionados con la memoria (aunque no todos, por lo que aún debe realizar un seguimiento de la asignación de memoria en su aplicación). -

Que es GetThresholdedImage1()? ¿Puedes publicar algo más de código? Utilice la nueva API y tendrá muchos menos problemas. -

Lo siento, creo que se arregló con un lanzamiento de imagen simple. ¿Iplimage se traduce a cv::Mat con bastante facilidad? Gracias. -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.