ubunut下用Python连接多个大恒图像2D相机,获取图像信息。

ubunut下用Python 连接大恒图像相机,获取图像信息。

准备工作

1,设备:相机,相机支架(可选)。
2,编程环境

直人正题

去官网下载Python开发包。

http://www.daheng-imaging.com/Software/index.aspx?nodeid=304

在这里插入图片描述
我选择第6个下载。下载的时候也要把第3个也下载,里面有后面要用到的软件。

安装相机需要的软件。
进入下载完成的目录,输人 ./Galaxy_camera.run

~/Downloads/Galaxy_Linux-x86_Gige-U3_32bits-64bits_1.1.1908.9162$ ./Galaxy_camera.run

安装完成后可以用软件测试自己的相机能否连接。

IP配置

连接相机的时候要自己配置IP
在这里插入图片描述
点这里进行IP的配置
在这里插入图片描述
在这里插入图片描述
这个是我配的IP,我的电脑是有2个网口,可以同时访问2个相机。

配置多个相机IP的时候有一个重要的地方要注意了:不能乱配。

测试连接相机

进入安装好软件的目录中,找到可运行文件如下图:
在这里插入图片描述

可以看到已经连接到一个相机,我们是要连接多个相机。就要光掉一些东西。
在这里插入图片描述

关了后就可以访问到多个相机了。
在这里插入图片描述
在这里插入图片描述
然后我们来打开相机看看。
在这里插入图片描述
nice。

配置环境

在前面我们下载了Python的API,里面有几个文档可以帮助到你很多。
在这里插入图片描述
我们要按着里面的来,环境很容易就能配好。
在这里插入图片描述

配好环境后就是编代码了。

import gxipy as gx
import sys
import numpy as np
from PIL import Image
import cv2
import math

#
device_manager = gx.DeviceManager()

# update_all_device_list()
dev_num,dev_info_list = device_manager.update_all_device_list()
if dev_num == 0:
    sys.exit(1)

print(dev_num)
print(dev_info_list)
# 打开设备
# 方法一
# 获取设备基本信息列表
# str_sn = dev_info_list[0].get("sn")
# print (str_sn)

# 通过序列号打开设备
# cam = device_manager.open_device_by_sn(str_sn)

# 方法二
# 通过用户 ID 打开设备
# str_user_id = dev_info_list[0].get("user_id")
# cam = device_manager.open_device_by_user_id(str_user_id)
# 方法三
# 通过索引打开设备
# str_index = dev_info_list[0].get("index")
# cam = device_manager.open_device_by_index(str_index)
# 下面为只针对千兆网相机使用的打开方式
# 方法四
for i in dev_info_list:
    # 通过 ip 地址打开设备
    str_ip= i.get("ip")
    print(str_ip)
    cam = device_manager.open_device_by_ip(str_ip)
    # 方法五
    # 通过 mac 地址打开设备
    # str_mac = dev_info_list[0].get("mac")
    # print(str_mac)
    # cam = device_manager.open_device_by_mac(str_mac)

    # 开始采集
    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()
    print(int_channel_num)

    # 获取数据
    # num 为采集图片次数
    num = 1
    for i in range(num):
        # 打开第 0 通道数据流
        raw_image = cam.data_stream[0].get_image()
        if raw_image.get_status() == gx.GxFrameStatusList.INCOMPLETE:
            print("incomplete frame")
        # 停止采集
        image = np.array(raw_image)
        print("image",image)
        print(type(raw_image))
        # 从黑白原始图像获取 numpy 数组
        numpy_image = raw_image.get_numpy_array()
        if numpy_image is None:
            continue
        # 之后,用户可根据获取的 numpy_array 显示、保存图像
        print(numpy_image)

    # 显示并保存获得的黑白图片
    image = Image.fromarray(numpy_image, 'L')
    image.show()
    image.save("acquisition_mono_image.jpg")
# 停止采集
cam.stream_off()

# 关闭设备
cam.close_device()
print("over")

在这里插入图片描述
好了,OK了。

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值