栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

大恒MER相机采集图像

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

大恒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()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339774.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号