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

显示结果:
在这里插入图片描述

发布了8 篇原创文章 · 获赞 2 · 访问量 1286

猜你喜欢

转载自blog.csdn.net/liuzongyuan1996/article/details/104221841