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
我如何解决这个问题?
答案 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.cam
(Aravis.Camera
的一个实例)可用的一些更具体的方法,您将能够设置一个“环”结构,这是流媒体的典型结构视频。但是,如果您只想要快照,请使用上面的代码。