Python調用大恆相機採集圖片(Ubuntu16.04)

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()

顯示結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章