文章目錄
- 安裝
- 獲取圖像
- 輔助數據
Vimba 是由 Allied Vision 開發的一套軟件開發套件(SDK),主要用于控制和操作其工業相機產品。它提供了一套完整的 API 和工具,支持多種操作系統和編程語言,便于開發者快速集成相機功能到應用程序中。下載地址Vimba。
安裝
Vimba并不提供pip或者conda這種便捷的安裝方式,一般在安裝Vimba軟件之后,其Python模塊會被存放在其安裝路徑,在文件夾【VimbaPython_Source】下。如果只是想做一下測試,則可以在該文件夾下進行Python程序的測試
from vimba import *
with Vimba.get_instance() as vimba:cams = vimba.get_all_cameras()
這行代碼的功能是,獲取所有已經連接到的Vimba相機的屬性。
如果想要更加靈活地使用該模塊,也沒關系,注意到文件夾中,有【setup.py】文件,可以通過下面的代碼來為當前的python環境安裝該模塊
python setup.py install
這樣就可以在任意工作路徑中使用vimba了。
獲取圖像
【get_frame】可以從相機對象中獲取一幀圖像。為了保證安全,Vimba模塊的許多操作都需要在with語句中進行,獲取圖像的示例如下
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數組后,查看圖像
import matplotlib.pyplot as plt
import numpy as npimg = frame.as_numpy_ndarray()
img.shape # (1032, 1296, 1)
plt.imshow(img, cmap='gray')
plt.show()
由于相機的鏡頭蓋沒打開,所以看到的是黑場。
輔助數據
【Camera】對象中封裝了許多函數,可用于獲取相機的工作參數,下面對其中的部分參數進行調用,以獲取其設備溫度、曝光時間以及幀率
with Vimba.get_instance() as vimba:cams = vimba.get_all_cameras()with cams[0] as cam:cam.DeviceTemperature.get() # 40.5cam.ExposureTime.get() # 4407.727cam.AcquisitionFrameRate.get() # 69.8
其中
- 【DeviceTemperature】用于獲取設備溫度
- 【ExposureTime】用于獲取曝光時間
- 【AcquisitionFrameRate】為設定幀率
這些參數與Vimba軟件的All選項卡中提供的參數一致,只需將其轉換為大駝峰的命名方式即可。