成像源Gige相机在Aravis中处理大量内存

时间:2015-07-13 10:32:20

标签: python opencv

Imaging Source Gige相机在我的python代码中不断运行。使用软件触发。它逐渐增加了拥有的内存,并且由于内存不足而暂停了。

这是我的捕获帧的python代码。

import cv2
from random import sample,randint
from aravis import Camera

cap = Camera("camera_1")
cap.cam.set_frame_rate(110)
cap.cam.set_exposure_time(1000)
cap.cam.set_trigger("Software")
cap.start_acquisition()

def GetVideo():
    cap.cam.software_trigger()
    camPhoto = cap.pop()
    return camPhoto

我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

您似乎正在使用的wrapper library,建议使用alternative method来捕获帧(您的GetVideo只占用一帧,它不返回时间序列的图像,所以它是有点用词不当):

def get_frame(cam):
    cam.start_acquisition()
    frame = cam.pop_frame()
    cam.stop_acquisition()
    return frame

注意每次启动和停止采集。通过检查stop_acquisition方法,您会注意到它将该调用重定向到Aravis库,其中很可能正确地拆除了内存缓冲区。

在您当前的实现中,您可能会注意到每次调用GetVideo时,内存的增加量与单个图像的大小(以MB为单位)大致相同。我猜测,通过使用cap.camAravis.Camera的一个实例)可用的一些更具体的方法,您将能够设置一个“环”结构,这是流媒体的典型结构视频。但是,如果您只想要快照,请使用上面的代码。