项目场景:
Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。
Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具有快速数据传输、低功耗、易于集成以及高度可扩展性等特点。
特殊检测类项目,使用高速高稳定的Baumer工业相机作为相机主体,使用Baumer BGAPI SDK进行集成采集图片进行检测
相机型号为VCXG-124M/51M相机。
问题描述
C++使用Baumer BGAPI SDK中初始化资源代码:
// DECLARATIONS OF VARIABLES BGAPI2::SystemList *systemList = NULL; BGAPI2::System * pSystem = NULL; BGAPI2::String sSystemID; BGAPI2::InterfaceList *interfaceList = NULL; BGAPI2::Interface * pInterface = NULL; BGAPI2::String sInterfaceID; BGAPI2::DeviceList *deviceList = NULL; BGAPI2::Device * pDevice = NULL; BGAPI2::String sDeviceID; BGAPI2::DataStreamList *datastreamList = NULL; BGAPI2::DataStream * pDataStream = NULL; BGAPI2::String sDataStreamID; BGAPI2::BufferList *bufferList = NULL; BGAPI2::Buffer * pBuffer = NULL; BGAPI2::String sBufferID; int returncode = 0; std::cout << std::endl; std::cout << "###############################################################" << std::endl; std::cout << "# PROGRAMMER'S GUIDE Example 011_ImageCaptureMode_Handler.cpp #" << std::endl; std::cout << "###############################################################" << std::endl; std::cout << std::endl << std::endl; std::cout << "SYSTEM LIST" << std::endl; std::cout << "###########" << std::endl << std::endl; // COUNTING AVAILABLE SYSTEMS (TL producers) try { systemList = BGAPI2::SystemList::GetInstance(); systemList->Refresh(); std::cout << "5.1.2. Detected systems: " << systemList->size() << std::endl; // SYSTEM DEVICE INFORMATION for (BGAPI2::SystemList::iterator sysIterator = systemList->begin(); sysIterator != systemList->end(); sysIterator++) { std::cout << " 5.2.1. System Name: " << sysIterator->GetFileName() << std::endl; std::cout << " System Type: " << sysIterator->GetTLType() << std::endl; std::cout << " System Version: " << sysIterator->GetVersion() << std::endl; std::cout << " System PathName: " << sysIterator->GetPathName() << std::endl << std::endl; } } catch (BGAPI2::Exceptions::IException& ex) { returncode = (returncode == 0) ? 1 : returncode; std::cout << "ExceptionType: " << ex.GetType() << std::endl; std::cout << "ErrorDescription: " << ex.GetErrorDescription() << std::endl; std::cout << "in function: " << ex.GetFunctionName() << std::endl; }
提示内存报错,如下所示
提示错误:0x00007FFDAD724FD9(KernelBase.dll)(GigeDemo.exe中)处有未经处理的异常:0xC000041D:用户回调区 间遇到未经处理的异常
提示错误:0x00007FFDAD724FD9(KernelBase.dll)(GigeDemo.exe中)处有未经处理的异常: 0xC000041D:用户回调区 间遇到未经处理的异常
原因分析:
Baumer工业相机在最开启初始化时,出现报错,一般是环境问题,比如SDK未安装完成,缺少文件等等。
前面的问题反馈出来是未生成合适的BGapi System实例,从而导致后续相机操作无法执行。
解决方案:
该电脑编译器平台环境为X86,实际电脑为X64环境,且对于的dll文件也为64位,因此需要调整编译器设置环境,重新生成即可,需要设置X64重新生成即可正常运行。
注意:
在C++环境使用Baumer BGAPI SDK做开发时,需要注意对应的编译器平台X86或者X64的类型,尤其是环境的 兼容性,出现问题可以使用其它电脑做对照验证测试。
工业相机软件开发注意要点:
在使用工业相机SDK进行软件开发时,有几个方面需要注意。
1. 兼容性 - 确保相机SDK与您的操作系统、开发环境和您所使用的工业相机型号兼容。
2. 2.功能 - 检查摄像机SDK是否支持您的应用所需的功能,如图像采集、视频录制和图像处理。
3. API文档 - 彻底检查API文档,确保其清晰和全面,便于开发和故障排除。
4. 开发环境 - 确保你的软件开发环境被正确配置为能与相机SDK一起工作。
5. 性能 - 在处理大量图像数据时要考虑到相机SDK的性能。
6. 支持和社区资源 - 评估客户支持和社区资源的可用性,如论坛或用户组,以协助解决故障和开发问题。
7. 许可证和成本 - 审查相机SDK的许可证和成本,以确保它符合您的项目预算和要求。