成像源Gige相机需要大量内存在Aravis中进行处理

2024-07-05 11:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

成像源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

我怎么解决这个问题?在


Tags: sample记忆代码fromimport软件randomcv2
1条回答
网友
1楼 · 发布于 2024-07-05 11:53:02

您似乎正在使用的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)可用的更具体的方法,您将能够设置一个“环”结构,这是流式视频的典型结构。但是,如果您只需要快照,请使用上面的代码。在

相关问题 更多 >