使用 Python SDK 调试大恒相机记录

这篇具有很好参考价值的文章主要介绍了使用 Python SDK 调试大恒相机记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大恒相机使用Python SDK调试记录



前言

使用长广溪机器人作画需要用到摄像头拍摄人像照片,经过推荐,使用大恒相机,型号为MER-503-36U3C,该相机为USB彩色相机。


更新了
大恒相机多线程采集图像


一、驱动下载及文档使用

在官网下载驱动软件Galaxy_Windows_CN_32bits-64bits_1.23.2305.9161.zip并安装。
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
安装完成后,在安装路径下可以看到如图所示两个文件夹 DocSamples ,Doc 文件夹内为大恒相机软件开发说明书,有 C++软件开发说明书.pdfC软件开发说明书.pdfDirectShow用户使用说明书.pdfDotNET软件开发说明书.pdfLabVIEW接口开发说明书.pdfpython接口开发说明书.pdf示例程序说明书.pdf,Samples 文件夹下为各语言开发包及示例代码。Python 开发需要将 gxipy 文件夹放到项目文件夹中,并且需要额外安装 PIL 包以处理图像格式。

二、相机调试

1.GalaxyView软件调试

打开 GalaxyView 软件,连接设备,打开相机,调试好的画面如图所示
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
未调试相机参数时屏幕可能出现偏绿色,画面卡顿,频闪,颜色错乱现象,参考网上资料及售后支持,我主要调节了以下几个参数,
在属性一栏设置设备带宽限制模式为 off,
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
可以看到设备带宽限制模式对于的 API 为 DeviceLinkThroughputLimitMode,在 Python SDK 中有同名的API可以调用设置,采集控制下设置自动曝光模式为 Continuous,将自动曝光最大值(AutoExposureTimeMax)限制为 10000.0,对应的 ExposureMode 也可以在Python 中调用设置,在模拟控制下设置自动增益(GainAuto)及自动白平衡(BalanceWhiteAuto)为 Continous,查看 python 接口开发说明书可以看到,Continuous 对应值为1。大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
这里需要用到查找表生成工具插件,调节 Gamma亮度对比度,选择合适的值并保存,这里的属性依旧有对应的 Python API可以调用在程序中设置,
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
售后支持提到用户参数组设置,需要保存用户参数组,在Python SDK中也有对应API。

2.Python开发

相机的工作流程如图所示,
大恒相机软件,大恒相机使用记录,机器人,python,图像处理,pyqt,自动驾驶,ROS,大恒相机
Python 开发即按照该流程进行,

2.1 引入库

import gxipy as gx
device_manager = gx.DeviceManager()

2.2 枚举设备

device_manager = gx.DeviceManager()
dev_num, dev_info_list = device_manager.update_device_list()
if dev_num == 0:
sys.exit(1)

2.3 打开设备

# 方法一
# 获取设备基本信息列表
str_sn = dev_info_list[0].get("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)
# 下面为只针对千兆网相机使用的打开方式
# 方法四
# 通过 ip 地址打开设备
str_ip= dev_info_list[0].get("ip")
cam = device_manager.open_device_by_ip(str_ip)
# 方法五
# 通过 mac 地址打开设备
str_mac = dev_info_list[0].get("mac")
cam = device_manager.open_device_by_mac(str_mac)
# 关闭设备
cam.close_device()

2.4 采集控制

# 开始采集
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()
if raw_image.get_status() == gx.GxFrameStatusList.INCOMPLETE:
 print("incomplete frame")
# 停止采集
cam.stream_off()

回调方式

# 定义采集回调函数
def capture_callback(raw_image):
if raw_image.get_status() == gx.GxFrameStatusList.INCOMPLETE:
 print("incomplete frame")
# 注册回调
cam.data_stream[0].register_capture_callback(capture_callback)
# 开始采集
cam.stream_on()
# 等待一段时间,这段时间会自动调用采集回调函数
time.sleep(1)
# 停止采集
cam.stream_off()
# 注销回调
cam.data_stream[0].unregister_capture_callback()

2.5 图像处理
图像处理主要分为图像格式转换,图像质量提升,图像显示和保存。
2.5.1图像格式转换
主要将 Bayer 格式图像转换成 RGB 格式图像。
1)对于彩色相机

raw_image = cam.data_stream[0].get_image()
# 保存 raw 图
raw_image.save_raw("raw_image.raw")
# 从彩色原始图像获取 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
# 之后,用户可根据获取的 numpy_array 显示、保存图像

2)对于黑白相机

raw_image = cam.data_stream[0].get_image()
# 从黑白原始图像获取 numpy 数组
numpy_image = raw_image.get_numpy()
if numpy_image is None:
 continue
# 之后,用户可根据获取的 numpy_array 显示、保存图像

2.5.2图像质量提升

# 设置图像质量提升的参数
if cam.GammaParam.is_readable():
 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
color_correction_param = cam.ColorCorrectionParam.get()
# 采集获取图像、格式转换
# .......
# 实现图像质量提升
rgb_image.image_improvement(color_correction_param, contrast_lut, 
gamma_lut)

2.5.3图像显示与保存
调用 PIL(Python Imaging Library)的接口 Image.fromarray(),将 numpy 数组转换成 Image 图像,显示
并保存。代码如下:
1)对于黑白相机

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

2)对于彩色相机

# 显示并保存获得的彩色图片
image = Image.fromarray(numpy_image, 'RGB')
image.show()
image.save("acquisition_RGB_image.jpg")

三、报错记录

几个月之后再运行程序报错,内容为:

gxipy.gxiapi.InvalidAccess: DeviceManager.open_device_by_index:{-1004}{{-1004}

提示相机已经打开,原因可能为之前的程序运行之后没有正常关闭相机,解决办法为断电重启相机,或者重新安装相机驱动。


四、编写相机上位机界面实现多线程采集图片

大恒相机多线程采集图像文章来源地址https://www.toymoban.com/news/detail-754912.html


到了这里,关于使用 Python SDK 调试大恒相机记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ZED相机使用记录(一):利用ZED SDK使用python完成局域网内的远程视频(视频流)传输

    ** 本文主要介绍ZED2相机以及具有的功能,ZED2相机(这里使用ZED2相机,主要是因为视频流传输功能目前只有ZED2、ZED mini等新版本相机才有的功能)** 本文所使用的环境: python:3.8 CUDA:10.2 需要安装的python库:pyzed(安装好ZED SDK后安装)、opencv(cv2)、sys 接收端(服务端):测试过的有

    2024年02月13日
    浏览(38)
  • 海康机器人工业相机SDK MVS安装教程

    海康机器人是面向全球的机器视觉和移动机器人产品及解决方案提供商,业务聚焦于工业物联网、智慧物流和智能制造,构建开放合作生态,为工业和物流领域用户提供服务,以创新技术持续推动智能化,引领智能制造进程。 进入官网 https://www.hikrobotics.com/cn,点击下载中心

    2024年02月10日
    浏览(48)
  • 【HIKROBOT】海康机器人:工业相机SDK二次开发

    海康机器人官网链接:https://www.hikrobotics.com/cn 根据购买设备的型号下载用户说明书 笔者实验室购买了两款,一款GigE网口接口的,一款USB接口 GigE网口接口 USB接口:MV-CA050-20UC 服务支持”“下载中心”“机器视觉”中下载MVS客户端安装包及SDK开发包。 1.1.1 Ubuntu18.04系统安装 下

    2024年02月05日
    浏览(59)
  • 如何使用OpenAI API和Python SDK构建自己的聊天机器人

    近日,OpenAI公司的ChatGPT模型走红网络。同时,OpenAI也推出了Chat API和gpt-3.5-turbo模型,让开发者能够更轻松地使用与ChatGPT类似的自然语言处理模型。 通过OpenAI API,我们可以使用gpt-3.5-turbo模型,实现多种任务,包括:撰写电子邮件或其他文本内容,编写Python代码,创建对话代

    2024年02月01日
    浏览(43)
  • 遨博协作机器人高级编程 -AUBOPE SDK Python接口介绍与使用

    目录 一、简介 二、环境版本 三、Python SDK接口简介 1.Python SDK接口数据 2. Python SDK接口函数示例 四、任务实施 五、任务拓展 大家好,本篇文章主要针对AUBOPE系统基于Python编程语言的SDK开发方面进行讲解。掌握Windows系统下Python环境的搭建,掌握机器人Python编程接口的开发流程

    2024年02月12日
    浏览(98)
  • 小目标检测(1)——大恒(DaHeng)相机操作与控制编程

    在做老师的横向项目时,需要用大恒相机,需要将他的相机控制接入写的程序中,但是对于他的SDK并不了解,所以就好好看了他的SDK文件,并按照他的开发手册写了一个小的demo。 相关开发库的介绍 在使用别人的代码过程中,有很多库自己都看不懂,这里做一下记录 GxIAPICP

    2024年02月13日
    浏览(32)
  • 【记录】海康相机(SDK)二次开发时的错误码

    在进行海康sdk二次开发的时候,经常碰到各种错误,遂结合官方文档和广大网友的一些经验,把这些错误码记录一下,方便查找。笔者使用的SDK版本是HCNetSDKV6.1.9.4。 错误类型 错误码 错误信息 NET_DVR_NOERROR 0 没有错误。 NET_DVR_PASSWORD_ERROR 1 用户名密码错误。注册时输入的用户名

    2024年04月08日
    浏览(80)
  • Baumer工业相机堡盟工业相机如何通过NEOAPI SDK设置软件触发模式(C++)

    Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩

    2024年01月17日
    浏览(52)
  • NVIDIA AGX Xavier平台相机嵌入数据采集调试记录

    在本文中,我们将详细介绍如何在NVIDIA AGX Xavier平台上进行相机数据采集并进行嵌入式数据调试。我们将提供相应的源代码,并逐步解释每个步骤。 首先,我们需要确保AGX Xavier平台已正确设置并连接相机。我们假设您已经完成了这一步骤,并已经安装了适当的相机驱动程序。

    2024年02月07日
    浏览(42)
  • Jetson AGX Orin 平台12路4K相机CPHY驱动调试问题记录

    在Orin上启动CPHY相机模块时遇到了一些问题。 将4台CPHY摄像机连接到Orin 每个相机输出3VC图像 modex setting:

    2024年02月12日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包