La función OpenCV Python QueryFrame pierde memoria

Estoy usando la interfaz de Python para OpenCV 2.2.0 . El siguiente código funciona correctamente para capturar fotogtwigs de un archivo de video:

 for f in range(1, frameCount): # grab the left and right frames frameL = cv.QueryFrame(videoL) frameR = cv.QueryFrame(videoR) # create the image for the first frame if f==1: imageL = cv.CreateImage(cv.GetSize(frameL), frameL.depth, frameL.channels) imageR = cv.CreateImage(cv.GetSize(frameR), frameR.depth, frameR.channels) # update the images cv.Copy(frameL, imageL) cv.Copy(frameR, imageR) 

Sin embargo, a medida que proceso más cuadros de video, el consumo de memoria sigue aumentando. De acuerdo con la documentación de OpenCV, no necesitamos liberar la memoria para los datos de imagen obtenidos por cv.QueryFrame . ¿Sigue siendo esto correcto? Intenté “del frameL” y “del frameR”, pero no resolvió el problema. ¿Hay algún error en el envoltorio de Python para OpenCV en esta función en particular?

Gracias.

Debería asignar memoria para ambas imágenes una vez: imageL = cv.CreateImageHeader (cv.GetSize (frameL), frameL.depth, frameL.channels) imageR = cv.CreateImageHeader (cv.GetSize (frameR), frameR.depth, frameR.channelsels )

luego comience su bucle y establezca los datos:

 cv.SetData(frameL, imageL) cv.SetData(frameR, imageR) 

entonces algo como

 for f in range(1, frameCount): # grab the left and right frames frameL = cv.QueryFrame(videoL) frameR = cv.QueryFrame(videoR) # create the image for the first frame if f==1: imageL = cv.CreateImageHeader(cv.GetSize(frameL), frameL.depth, frameL.channels) imageR = cv.CreateImageHeader(cv.GetSize(frameR), frameR.depth, frameR.channels) # update the images cv.SetData(frameL, imageL) cv.SetData(frameR, imageR)