大恒MER相机采集图像


前言

记录一下使用大恒的MER相机采集图片的过程


一、相机整体工作流程

相机的整体工作流程如图所示:
在这里插入图片描述

二、图像采集代码

前提说明:运行前在相机驱动安装文件GalaxySDK中找到GxIAPI.dll文件,并复制到Samples–Python SDK–gxipy文件夹里面,否则运行会提示缺少GxIAPI.dll文件,然后把gxipy模块复制到项目文件中,才能导入成功。
代码如下:

import gxipy as gx
from PIL import Image


print("")
print("-------------------------------------------------------------")
print("Sample to show how to acquire color image continuously and show acquired image.")
print("-------------------------------------------------------------")
print("")
print("Initializing......")
print("")

# 创建设备管理对象
device_manager = gx.DeviceManager()

# 枚举设备,dev_num为相机数量
dev_num, dev_info_list = device_manager.updata_device_list()
if dev_num == 0:
    print("Number of enumerated devices is 0")

# 打开相机
cam = device_manager.open_device_by_index(1)

# 设置连续获取模式
cam.TriggerMode.set(gx.GxSwithEntry.OFF)

# 设置曝光时间
cam.ExposureTime.set(10000.0)

# 设置增益,增益越大,噪音越大
cam.Gain.set(10.0)

# 获取改善图像质量的参数
if cam.GammaParam.is_readable():  # gamma参数
    gamma_value = cam.GammaParam.get()
    gamma_lut = gx.Utility.get_gamma_lut(gamma_value)
else:
    gamma_lut = None
if cam.ContrastParam.is_readable():  # 对比度参数
    contrast_value = cam.ContrastParam.get()
    contrast_lut = gx.Utility.get_contrast_lut(contrast_value)
else:
    contrast_lut = None
if cam.ColorCorrectionParam.is_readable():  # 白平衡参数
    color_correction_param = cam.ColorCorrectionParam.get()
else:
    color_correction_param = 0

# 开启采集控制
cam.stream_on()

# 获取流通道个数
int_channel_num = cam.get_stream_channel_num()
# 如果 int_channel_num == 1,设备只有一个流通道,列表 data_stream 元素个数为 1
# 如果 int_channel_num > 1,设备有多个流通道,列表 data_stream 元素个数大于 1
# 目前千兆网相机、 USB3.0、 USB2.0 相机均不支持多流通道

num = 1  # 设置采集图片的数量
for i in range(num):
    # 打开第0通道数据流
    raw_image = cam.data_stream[0].get_image()
    # 判断是否为残帧
    if raw_image.get_status() == gx.GxFrameStatusList.INCONPLETE:
        print("incomplete frame")
    # 把原始图像转换为RGB图像
    RGB_image = raw_image.convert("RGB")
    # 改善图像质量
    RGB_image.image_improvement(color_correction_param, contrast_lut, gamma_lut)
    # 把RGB图像转换为numpy数组
    numpy_image = RGB_image.get_numoy_array()
    # 图片显示
    img = Image.fromarray(numpy_image, "RGB")
    img.show()

    # 保存图像
    img.save("{}.png".format(i))
# 关闭采集控制
cam.stream_off()

# 关闭相机
cam.close_device()
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值