如何将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
相关产品推荐
相关产品推荐

