Vimba相机二次开发教程,基于Python

文章目录

Vimba 是由 Allied Vision 开发的一套软件开发套件(SDK),主要用于控制和操作其工业相机产品。它提供了一套完整的 API 和工具,支持多种操作系统和编程语言,便于开发者快速集成相机功能到应用程序中。下载地址Vimba

安装

Vimba并不提供pip或者conda这种便捷的安装方式,一般在安装Vimba软件之后,其Python模块会被存放在其安装路径,在文件夹【VimbaPython_Source】下。如果只是想做一下测试,则可以在该文件夹下进行Python程序的测试

python 复制代码
from vimba import *
with Vimba.get_instance() as vimba:
    cams = vimba.get_all_cameras()

这行代码的功能是,获取所有已经连接到的Vimba相机的属性。

如果想要更加灵活地使用该模块,也没关系,注意到文件夹中,有【setup.py】文件,可以通过下面的代码来为当前的python环境安装该模块

python 复制代码
python setup.py install

这样就可以在任意工作路径中使用vimba了。

获取图像

【get_frame】可以从相机对象中获取一帧图像。为了保证安全,Vimba模块的许多操作都需要在with语句中进行,获取图像的示例如下

python 复制代码
with Vimba.get_instance() as vimba:
    cams = vimba.get_all_cameras()
    with cams[0] as cam:
        frame = cam.get_frame()

【Frame】是Vimba特有的数据格式,通过调用其中的【get_buffer】可以获取其数据,在利用【get_height】得到图像的高度,理论上就可以恢复出一张图像了。但另一方面,这里更推荐使用两个转换函数

  • 【as_numpy_ndarray】转换为numpy数组
  • 【as_opencv_image】转换为opencv图像

下面将其转换为numpy数组后,查看图像

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

img = frame.as_numpy_ndarray()
img.shape       # (1032, 1296, 1)
plt.imshow(img, cmap='gray')
plt.show()

由于相机的镜头盖没打开,所以看到的是黑场。

辅助数据

【Camera】对象中封装了许多函数,可用于获取相机的工作参数,下面对其中的部分参数进行调用,以获取其设备温度、曝光时间以及帧率

python 复制代码
with Vimba.get_instance() as vimba:
    cams = vimba.get_all_cameras()
    with cams[0] as cam:
        cam.DeviceTemperature.get()        # 40.5
        cam.ExposureTime.get()             # 4407.727
        cam.AcquisitionFrameRate.get()     # 69.8

其中

  • 【DeviceTemperature】用于获取设备温度
  • 【ExposureTime】用于获取曝光时间
  • 【AcquisitionFrameRate】为设定帧率

这些参数与Vimba软件的All选项卡中提供的参数一致,只需将其转换为大驼峰的命名方式即可。

相关推荐
依然鸣6 小时前
PTA团体程序设计天梯赛L1真题讲解L1-077-080
开发语言·c++·算法·深度优先·pat考试·图论
麻雀飞吧7 小时前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学7 小时前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star7 小时前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变7 小时前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
库玛西8 小时前
现代 C++ 智能指针全景指南:从 RAII 思想到工业级实践
c语言·开发语言·c++·笔记·面试
AC赳赳老秦8 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw
databook8 小时前
如何对稀疏数据的场景进行分析
python·数据挖掘·数据分析
liulilittle8 小时前
无锁并发容器的设计与实现原理
开发语言·c++·set·map·并发·无锁·lock-free
朋克洛德的码农9 小时前
Go并发-sync包四剑客:Mutex、RWMutex、WaitGroup、Once-从入门到原理
开发语言·后端·golang