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

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

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



前言

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


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


一、驱动下载及文档使用

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

二、相机调试

1.GalaxyView软件调试

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

2.Python开发

相机的工作流程如图所示,
大恒相机软件,长广溪机器人调试,机器人,python,图像处理,硬件工程,pyqt,pillow,物联网
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-698029.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日
    浏览(30)
  • 小目标检测(1)——大恒(DaHeng)相机操作与控制编程

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

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

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

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

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

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

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

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

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

    2024年02月12日
    浏览(32)
  • Python使用HTTP代理实现网络请求的调试和日志记录

    在Python中,使用HTTP代理可以实现网络请求的调试和日志记录。通过HTTP代理,我们可以拦截、修改或记录网络请求和响应的数据,以便更好地了解和调试网络请求。 下面是一个使用Python和 httplib2 库实现HTTP代理的示例,同时对请求和响应进行调试和日志记录: python 复制代码

    2024年01月19日
    浏览(54)
  • 图漾相机—windows- Python SDK(官网下载编译)

    Cmake: Cmake官网下载地址:https://cmake.org/download/ 下载下来就是这样,双击打开安装即可 https://www.swig.org/download.html 在图漾官网下载中心下载:https://www.percipio.xyz/downloadcenter/。 使用 git 指令获取本地副本:打开终端,切换到需存放 SDK 的工作目录下,输入 git clone 命令克隆远程

    2024年02月08日
    浏览(59)
  • FPGA调试问题记录(软件无线电)

    一、Vivado报错 【labtools 27-3403】 原因:JTAG频率过高。 解决:连接调试器时降低JTAG频率。 【DRC REQP-1619】 原因:没接管脚,造成没有IOB来驱动GT。 【DRC REQP-1712】 输入信号clk不是来自普通的单端时钟信号。 解决: 方法1.IP核中将PLL的clk_in1的source参数修改为Global buffer。 方法2

    2024年02月14日
    浏览(33)
  • Baumer工业相机堡盟相机如何使用NEOAPI SDK实现相机的连接(C++)

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

    2024年02月03日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包