Python調用大恆相機(Ubuntu16.04)
下載API文件
wget http://gb.daheng-imaging.com/CN/Software/Cameras/Python/Galaxy_Linux_Python_1.0.1905.9081.tar.gz
解壓文件
tar zxvf Galaxy_Linux_Python_1.0.1905.9081.tar.gz
文件結構
環境配置
安裝大恆相機Linux驅動https://blog.csdn.net/liuzongyuan1996/article/details/104219550
安裝完驅動後:
cd ./api
sudo apt-get install python3.5 install python3.5-dev python3-setuptools
python3 setup.py build
sudo python3 setup.py install
sudo pip3 install numpy
驗證
python3
import gxipy
# 不報錯說明安裝成功
採集圖片
安裝matplotlib用於顯示圖片
sudo pip3 install matplotlib
採集代碼
# !/home/liu/miniconda3/envs/dahengcamera/bin/python
# coding=utf-8
# 用戶可自定義調用前綴,樣例中使用了 gx
import gxipy as gx
import matplotlib.pyplot as plt
# 枚舉設備。
# dev_info_list 是設備信息列表,列表的元素個數爲枚舉到的設備個數,列表元素是字典,其中包含設備索引(index)、ip 信息(ip)等設備信息
device_manager = gx.DeviceManager()
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
sys.exit(1)
# 打開設備
# 獲取設備基本信息列表
str_sn = dev_info_list[0].get("sn")
# 通過序列號打開設備
cam = device_manager.open_device_by_sn(str_sn)
# 開始採集
cam.stream_on()
# 獲取流通道個數
# 如果 int_channel_num == 1,設備只有一個流通道,列表 data_stream 元素個數爲 1
# 如果 int_channel_num > 1,設備有多個流通道,列表 data_stream 元素個數大於 1
# 目前千兆網相機、USB3.0、USB2.0 相機均不支持多流通道。
# int_channel_num = cam.get_stream_channel_num()
# 獲取數據
# num 爲採集圖片次數
num = 1
for i in range(num):
# 從第 0 個流通道獲取一幅圖像
raw_image = cam.data_stream[0].get_image()
# 從彩色原始圖像獲取 RGB 圖像
rgb_image = raw_image.convert("RGB")
if rgb_image is None:
continue
# 從 RGB 圖像數據創建 numpy 數組
numpy_image = rgb_image.get_numpy_array()
if numpy_image is None:
continue
# 顯示並保存獲得的 RGB 圖片
plt.imshow(numpy_image)
plt.show()
# 停止採集,關閉設備
cam.stream_off()
cam.close_device()
顯示結果: