Baumer工业相机堡盟相机如何使用BGAPI SDK实现相机资源的正确释放(C++)

简介: Baumer工业相机堡盟相机如何使用BGAPI SDK实现相机资源的正确释放(C++)

Baumer工业相机

Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。


Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。

Baumer工业相机的BGAPI SDK一般在使用相机后在最好需要将相机资源释放,释放的步骤比较重要,本文介绍如何正确地使用BGAPI SDK释放相机资源


Baumer工业相机SDK技术背景

Baumer工业相机的BGAPI SDK可以提供相机的图像原始数据,在集成相机和视觉软件使用后,关闭视觉软件时需要同时使用SDK去释放SDK占用的相机资源。


工业相机的SDK(Software Development Kit)是为了方便开发人员对工业相机进行控制和图像采集而提供的一套软件工具。而Halcon是一款强大的机器视觉软件,能够进行图像处理、分析、识别等多种任务。


这里主要描述如何在C++的平台下实现对应的资源释放功能的核心代码


代码分析

本文介绍使用BGAPI SDK对Baumer工业相机进行开发时,使用SDK进行相机资源释放的功能。


释放所有相机资源

相机资源释放,在软件关闭,程序退出的时候,需要将创建的资源逐一关闭并释放,资源关闭

释放的顺序跟创建的顺序正好相反;


C++环境下释放所有相机资源代码如下所示:

void CGigeDemoDlg::OnBnClickedCancel()
{
  // TODO: 在此添加控件通知处理程序代码
  USES_CONVERSION;
  //执行相机关闭指令
  try
  {
  if (m_pDevice != NULL)
  {
    if (m_pDevice->GetRemoteNodeList()->GetNodePresent("AcquisitionAbort"))
    {
    m_pDevice->GetRemoteNode("AcquisitionAbort")->Execute();
    }
    m_pDevice->GetRemoteNode("AcquisitionStop")->Execute();
  }
  }
  catch (BGAPI2::Exceptions::IException& ex)
  {
  CString str1;
  str1.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
  MessageBox(str1);
  }
  //停止相机的采集流
  //STOP DataStream acquisition
  try
  {
  if (m_pDataStream != NULL)
  {
    m_pDataStream->StopAcquisition();
    m_pBufferList->DiscardAllBuffers();
  }
  }
  catch (BGAPI2::Exceptions::IException& ex)
  {
  CString str2;
  str2.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
  MessageBox(str2);
  }
  //释放相机的采集流
  //Release buffers
  try
  {
  if (m_pDataStream != NULL)
  {
    while (m_pBufferList->size() > 0)
    {
    m_pBuffer = m_pBufferList->begin()->second;
    m_pBufferList->RevokeBuffer(m_pBuffer);
    delete m_pBuffer;
    }
    //关闭相机的数据流
    m_pDataStream->Close();
    //关闭相机的设备
    m_pDevice->Close();
    //关闭相机连接的网口
    m_pInterface->Close();
    //关闭相机连接的实例类
    m_pSystem->Close();
    //释放相机连接类的资源
    BGAPI2::SystemList::ReleaseInstance();
    //Enable the button_inialize
    //GetDlgItem(ID_BTNINITIALIZE)->EnableWindow(TRUE);
  }
  }
  catch (BGAPI2::Exceptions::IException& ex)
  {
  CString str3;
  str3.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
  MessageBox(str3);
  }
  CDialogEx::OnCancel();
}

释放相机资源注意点

C++环境下释放相机资源代码需要特别注意相机数据流的停止指令,这块尤其重要;

有时停止指令发送后,未停止相机数据流,后面直接执行相机的类释放会导致报错发生。

//STOP DataStream acquisition
  try
  {
  if (m_pDataStream != NULL)
  {
    **m_pDataStream->StopAcquisition();**
    m_pBufferList->DiscardAllBuffers();
  }
  }
  catch (BGAPI2::Exceptions::IException& ex)
  {
  CString str2;
  str2.Format(_T("ExceptionType:%s! ErrorDescription:%s in function:%s"),ex.GetType(),ex.GetErrorDescription(),ex.GetFunctionName());
  MessageBox(str2);
}

工业相机SDK来释放工业相机的资源的优点

增加灵活性: 通过使用SDK,开发人员可以定制和调整相机功能,以更好地适应他们的具体应用要求。


改进集成: 该SDK允许多个相机和相机组件与其他硬件和软件系统无缝集成。


更大程度的控制: 使用工业相机SDK可以更深入、更直接地访问相机的功能和数据,从而更好地控制捕获的图像和视频。


增强性能: 使用SDK可以提高相机性能,加快数据处理速度,从而获得更高质量的图像和视频。


降低成本: SDK允许在选择和定制相机系统时有更大的灵活性,从长远来看有可能导致成本的节约。


工业相机SDK来释放工业相机的资源的重要性

在软件中正确释放工业相机资源非常重要,因为它可以确保相机及其相关硬件不会处于不一致或不稳定的状态,这可能导致内存泄漏、性能下降和系统崩溃等问题。


遵循SDK(软件开发工具包)中的步骤,可以确保摄像机使用的所有组件被正确关闭,任何内存或其他系统资源被正确释放。


这可以帮助确保摄像机及其相关组件正常工作,并确保软件应用程序长期稳定和可靠。

目录
相关文章
|
10月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C#)
137 0
|
10月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用Force IP强制修改网口IP功能(C++)
78 0
|
10月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK使用ForceIP强制修改网口IP功能(C#)
80 0
|
7月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
492 1
|
10月前
|
监控 API 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取每张图像的微秒时间和FrameID功能(C++)
105 0
|
25天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
3天前
|
设计模式 安全 C++
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
33 16
|
7天前
|
安全 C++
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
50 6
|
1月前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
25天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。

热门文章

最新文章

  • 1
    【Azure Service Bus】分享使用 Python Service Bus SDK 输出SDK内操作日志
    36
  • 2
    【Azure Storage Account】利用App Service作为反向代理, 并使用.NET Storage Account SDK实现上传/下载操作
    23
  • 3
    【04】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-正确安装鸿蒙SDK-结构目录介绍-路由介绍-帧动画(ohos.animator)书写介绍-能够正常使用依赖库等-ArkUI基础组件介绍-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    91
  • 4
    CompreFace:Star6.1k,Github上火爆的轻量化且强大的人脸识别库,api,sdk都支持
    54
  • 5
    【Azure Developer】编写Python SDK代码实现从China Azure中VM Disk中创建磁盘快照Snapshot
    29
  • 6
    【02】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-准备工具安装-编译器DevEco Studio安装-arkts编程语言认识-编译器devco-鸿蒙SDK安装-模拟器环境调试-hyper虚拟化开启-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
    56
  • 7
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    178
  • 8
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    179
  • 9
    【01】完整开发即构美颜sdk的uni官方uts插件—让所有开发者可以直接使用即构美颜sdk的能力-优雅草卓伊凡
    80
  • 10
    AutoTalk第十三期-应知必会的自动化工具-阿里云SDK支持策略(一)
    65