Mech-Eye SDK 2.2.0更新说明
本文介绍Mech-Eye SDK 2.2.0版本的新增功能、功能优化以及问题修复。
Mech-Eye Viewer
新增功能
新增预置参数组
将V4相机固件升级至2.2.0版本后,相机中新增适用于不同场景或工件的预置参数组。根据实际场景选择对应的参数组后,微调参数值即可获取质量满足要求的数据,简化参数调节的过程。
功能优化
优化3D曝光助手的界面和功能
Mech-Eye Viewer 2.2.0将原曝光助手工具更名为3D曝光助手,并优化了该工具的界面及功能。
当前,3D曝光助手可根据设置的感兴趣区域自动计算合适的单次曝光时间,并可将计算结果直接应用至3D参数分组下的曝光时间参数。通过该工具,可简化参数调节流程,更便捷地提升深度图和点云的质量。
连接前检查IP地址
Mech-Eye Viewer 2.2.0在连接相机前自动检查相机IP地址,可提前发现导致无法连接相机的问题。
Mech-Eye Viewer启动后,将自动检查以下问题。存在问题的相机,其信息卡片中将显示图标。
-
相机IP地址和与相机相连的电脑网口IP地址是否在同一网段。
-
是否有多台相机的IP地址相同。
优化固件和软件升级流程
Mech-Eye Viewer 2.2.0全面优化固件和软件升级流程,提升用户体验。
-
如固件或软件需要升级,相机信息卡片中将显示升级按钮。单击该按钮即可开始升级固件或软件。
-
如需升级软件,单击升级按钮后将显示Mech-Eye SDK的下载链接,可直接跳转至梅卡曼德下载中心获取最新版本的软件。
优化保存数据功能
Mech-Eye Viewer 2.2.0的保存数据功能优化了以下方面:
-
调整界面中选项的排序,更加符合实际使用顺序。
-
保存点云时,可通过数据结构菜单选择保存有序或无序点云。
-
可保存CSV格式的点云。CSV格式的点云文件更小,且可便捷地使用Microsoft Excel等程序或编程语言进行数据处理和分析。
-
保存PLY和PCD格式的点云时,可通过颜色菜单选择要保存的点云颜色。提供的选项与点云显示界面左边栏中的颜色菜单一致。
-
更改原使用上次拍摄图片选项为重新采集数据,在需要重新采集数据并保存时勾选。
问题修复
Mech-Eye Viewer 2.2.0修复了以下问题:
-
Mech-Eye Viewer无法打开,手动更改Windows Defender防火墙中允许应用或功能通过Windows Defender防火墙的设置后才可打开。
-
通过Windows远程桌面助手连接电脑并打开Mech-Eye Viewer时,Mech-Eye Viewer程序崩溃。
-
通过Mech-Eye Viewer可为相机设置无效的子网掩码,导致相机无法被搜索到。
-
深度图分析器中,所画线上无深度值的点在右图的曲线中有深度值。
-
在未采集到有效点云的情况下单击点云展示功能的播放按钮后,如重新采集到有效点云,点云显示异常。
-
PRO S(V4)和PRO M(V4):偶发投影单元不投光,且无法恢复正常。
-
Laser L Enhanced(V3)、LSR S(V4)和LSR L(V4):2D参数分组下的曝光模式/2D图(纹理)曝光模式参数设置为HDR时,偶发相机断开连接并自动重启。
Mech-Eye API
Mech-Eye API 2.2.0进行了重构,在保留原有的全部功能的基础上,调整为更加清晰的结构,并提供新增功能。
|
新增功能
新增预置参数组
将V4相机固件升级至2.2.0版本后,相机中新增适用于不同场景或工件的预置参数组。根据实际场景选择对应的参数组后,微调参数值即可获取质量满足要求的数据,简化参数调节的过程。
计算点云法向量
调用以下新增方法,可直接获取包含法向量的3D数据,减少后续数据处理的工作量。
如需使用该新增功能,则必须参考迁移指南修改客户端程序,以应用2.2.0版本的Mech-Eye API。 |
-
获取带法向量的无纹理点云:
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D; camera.capture3DWithNormal(frame3D); PointCloudWithNormals pointCloud = frame3D.getUntexturedPointCloudWithNormals();
var frame3D = new Frame3D(); camera.Capture3DWithNormal(ref frame3D); var pointCloud = frame3D.GetUntexturedPointCloudWithNormals();
frame_3d = Frame3D() camera.capture_3d_with_normal(frame_3d) point_cloud = frame_3d.get_untextured_point_cloud_with_normals()
-
-
获取带法向量的纹理点云:
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D; camera.capture2DAnd3DWithNormal(frame2DAnd3D); TexturedPointCloudWithNormals pointCloud = frame2DAnd3D.getTexturedPointCloudWithNormals();
var frame2DAnd3D = new Frame2DAnd3D(); camera.Capture2DAnd3DWithNormal(ref frame2DAnd3D); var pointCloud = frame2DAnd3D.GetTexturedPointCloudWithNormals();
frame_2d_and_3d = Frame2DAnd3D() camera.capture_2d_and_3d_with_normal(frame_2d_and_3d) point_cloud = frame_2d_and_3d.get_textured_point_cloud_with_normals()
-
检测相机连接状态
新增心跳信号发送机制,可用于检测相机断开连接的问题。
如需使用该新增功能,则必须参考迁移指南修改客户端程序,以应用2.2.0版本的Mech-Eye API。 |
-
通过以下方法设置心跳信号的频率:
-
C++
-
C#
-
Python
camera.setHeartbeatInterval(1000);
camera.SetHeartbeatInterval(1000);
camera.set_heartbeat_interval(1000)
-
-
通过以下方法注册回调函数,可自动检测到相机断开连接的情况并提供报错:
-
C++
-
C#
-
Python
mmind::eye::CameraEvent::EventCallback callback = [](mmind::eye::CameraEvent::Event event, void* pUser) { std::cout << "A camera event has occurred. The event ID is " << event << "." << std::endl; }; mmind::eye::CameraEvent::registerCameraEventCallback(camera, callback, nullptr, mmind::eye::CameraEvent::CAMERA_EVENT_DISCONNECTED);
private static void CallbackFunc(CameraEvent.Event cameraEvent, IntPtr pUser) { Console.WriteLine("A camera event has occurred. The event ID is {0}.", cameraEvent); } Utils.ShowError(CameraEvent.RegisterCameraEventCallback(ref camera, CallbackFunc, IntPtr.Zero, (uint)CameraEvent.Event.CAMERA_EVENT_DISCONNECTED));
class CustomCallback(EventCallbackBase): def __init__(self): super().__init__() def run(self, event): print("A camera event has occurred. The event ID is {0}.".format(event)) camera_event = CameraEvent() callback = CustomCallback() show_error(camera_event.register_camera_event_callback(camera, callback, CameraEvent.CAMERA_EVENT_ALL))
-
提供保存点云的方法
调用以下新增方法,可直接保存PLY、PCD或CSV格式的点云,无需依赖第三方软件库。
如需使用该新增功能,则必须参考迁移指南修改客户端程序,以应用2.2.0版本的Mech-Eye API。 |
-
保存无纹理点云:
-
C++
-
C#
-
Python
mmind::eye::Frame3D frame3D; camera.capture3D(frame3D); frame3D.saveUntexturedPointCloud(mmind::eye::FileFormat::PLY, "PointCloud.ply");
var frame3D = new frame3D(); camera.Capture3D(ref frame3D); frame3D.SaveUntexturedPointCloud(FileFormat.PLY, "PointCloud.ply");
frame_3d = Frame3D() camera.capture_3d(frame_3d) frame_3d.save_untextured_point_cloud(FileFormat_PLY, "PointCloud.ply")
-
-
保存纹理点云:
-
C++
-
C#
-
Python
mmind::eye::Frame2DAnd3D frame2DAnd3D; camera.capture2DAnd3D(frame2DAnd3D); frame2DAnd3D.saveTexturedPointCloud(mmind::eye::FileFormat::PLY, "TexturedPointCloud.ply");
var frame2DAnd3D = new Frame2DAnd3D(); camera.Capture2DAnd3D(ref frame2DAnd3D); frame2DAnd3D.SaveTexturedPointCloud(FileFormat.PLY, "TexturedPointCloud.ply");
frame_2d_and_3d = Frame2DAnd3D() camera.capture_2d_and_3d(frame_2d_and_3d) frame_2d_and_3d.save_textured_point_cloud(FileFormat_PLY, "TexturedPointCloud.ply")
-
新增IP配置工具
2.2.0版本以可执行文件形式提供IP配置工具,包含Mech-Eye Viewer中提供的全部相关功能,可在Ubuntu系统中完成相机的IP配置。
提供LabView和VisionPro例程
通过C# Mech-Eye API,可在LabView和VisionPro中连接并控制相机。相关例程可从GitHub下载。
以下版本经过测试:
|
GenICam接口
新增功能
新增预置参数组
将V4相机固件升级至2.2.0版本后,相机中新增适用于不同场景或工件的预置参数组。根据实际场景选择对应的参数组后,微调参数值即可获取质量满足要求的数据,简化参数调节的过程。
新增IP配置工具
2.2.0版本以可执行文件形式提供IP配置工具,包含Mech-Eye Viewer中提供的全部相关功能,可在Ubuntu系统中完成相机的IP配置。