OpenCV的Python的QueryFrame函数泄漏内存

我使用Python接口OpenCV 2.2.0 。 下面的代码可以正确处理从视频文件中抓取帧:

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)

然而,当我处理更多的视频帧,内存消耗不断增加。 根据OpenCV的文档,我们并不需要释放存储器用于通过获得的图像数据cv.QueryFrame 。 这仍然是正确的? 我试图“德尔frameL”和“德尔成帧器”,但它并没有解决问题。 有没有在Python包装了OpenCV的在这个特殊的功能一个错误?

谢谢。

--------------解决方案-------------

您应该对图像的一次分配内存:imageL = cv.CreateImageHeader(cv.GetSize(frameL),frameL.depth,frameL.channels)成像仪= cv.CreateImageHeader(cv.GetSize(成帧器),frameR.depth,frameR.channels )

然后开始你的循环,并设置数据:

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

所以像

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)

分类:蟒蛇 时间:2012-07-16 人气:0
本文关键词: 视频,蟒蛇,OpenCV的
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.368 (s). 10 q(s)