You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Allied Vision相机对象设为全局变量以快速获取单帧?

解决pymba频繁初始化相机耗时的方案

要避免每次获取单帧都重新初始化相机,只需将相机实例设为全局变量,在程序启动时完成一次初始化,后续函数直接复用该实例即可,具体实现如下:

代码示例

from pymba import Vimba

# 全局层面完成Vimba和相机的初始化,仅执行一次
vimba = Vimba()
vimba.startup()
camera = vimba.camera(0)
camera.open()

def capture_single_frame():
    # 直接调用全局相机实例获取帧
    frame = camera.acquire_frame()
    # 可根据需求添加帧处理逻辑,比如转numpy数组:frame_data = frame.array
    return frame

if __name__ == "__main__":
    try:
        # 循环频繁获取单帧,无需重复初始化相机
        while True:
            frame = capture_single_frame()
            print("已获取单帧")
            # 此处添加你的帧业务处理代码
    finally:
        # 程序退出时务必释放资源
        camera.close()
        vimba.shutdown()

关键注意事项

  • 全局相机实例仅在程序启动时初始化一次,不要在函数内部重复执行vimba.camera(0)和camera.open()操作。
  • 程序结束时必须调用camera.close()和vimba.shutdown(),避免相机资源占用或设备异常。
  • 若需在多个自定义函数中使用相机,直接在函数内引用全局的camera对象即可;若函数内存在同名局部变量,需用global关键字声明该变量为全局变量。

内容的提问来源于stack exchange,提问作者user7768436

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 22:45:39