【问题标题】:Render RGB pointcloud together with surface match result将 RGB 点云与表面匹配结果一起渲染
【发布时间】:2022-11-11 18:01:29
【问题描述】:

(HalconDotNET)

我想用彩色点云从可视化匹配结果中渲染图像。

在示例程序find_surface_model_with_edges_simple.hdev 中运行find_surface_model() 后,您会收到一个姿势,通过此姿势,您可以使用visualize_object_model_3d() 可视化表面模型在场景中的匹配情况。从这样的可视化中,我想创建一个渲染图像以在我正在制作的应用程序中显示匹配结果。

要渲染彩色点云,我使用: render_object_model_3d (Image, ObjectModel3DSceneRaw_ccs, camPar, Pose_0, ['red_channel_attrib','green_channel_attrib','blue_channel_attrib'], ['&overlay_red','&overlay_green','&overlay_blue'])

要呈现匹配结果,我使用: render_object_model_3d (Image, [ObjectModel3DSceneRaw_ccs, ObjectModel3D], camPar, [Pose_0, detectedPose], ['color_0', 'color_1'], ['white', 'red'])

我无法在此函数中获取两个对象并且仍然具有 RGB 属性,Halcon 给出了参数错误。我还想指定对象模型的颜色。

我也尝试使用 3D 场景:

create_scene_3d (Scene3D)
add_scene_3d_camera (Scene3D, camPar, CameraIndex)
set_scene_3d_camera_pose (Scene3D, CameraIndex, detectedPose)
add_scene_3d_light (Scene3D, PoseInvert[0:2], 'point_light', LightIndex)
* The scene
add_scene_3d_instance (Scene3D, ObjectModel3DSceneRaw_ccs, detectedPose, InstanceIndex)
set_scene_3d_instance_param (Scene3D, InstanceIndex, ['red_channel_attrib','green_channel_attrib','blue_channel_attrib'], ['&overlay_red','&overlay_green','&overlay_blue'])
* The transformed objectModel
add_scene_3d_instance (Scene3D, ObjectModel3DRigidTrans, Pose_0, InstanceIndex2)
set_scene_3d_instance_param (Scene3D, InstanceIndex2, 'color', 'red')
* Display
display_scene_3d (WindowHandle, Scene3D, CameraIndex)

但这仅显示场景而不是匹配的对象模型。

有人知道我在做什么错吗?

【问题讨论】:

    标签: halcon


    【解决方案1】:

    对于我的目的,这个 hack 效果很好:

    
    HT empty = new HT();
    
    hop.CreatePose(0, 0, 0, 0, 0, 0, "Rp+T", "gba", "point", out HT pose_0);
    HT camParam = new HT(0.008, 0, 0, 0, 0, 0, 5.2e-006, 5.2e-006, 960, 600, 1920, 1200);
    HT renderGenParam = new HT("red_channel_attrib", "green_channel_attrib", "blue_channel_attrib");
    HT renderGenValue = new HT("red", "green", "blue");
    
    hop.ReadObjectModel3d(om3Path, 'm', empty, empty, out HT om3, out HT status);
    
    hop.RenderObjectModel3d(out HObject sceneImage, current_OM3, camParam, pose_0, renderGenParam, renderGenValue);
    hop.RenderObjectModel3d(out HObject objectImage, om3, camParam, avg_pose, "color_0", "green");
    hop.AddImage(sceneImage, objectImage, out HObject resultImage, 0.6, 0);
    hop.CropRectangle1(resultImage, out HObject resultCropped, 250, 400, 935, 1450);
    hop.WriteImage(resultCropped, "tiff", 0, @"./testImage.tiff");
    
    

    不是一个真正的解决方案。

    【讨论】:

      猜你喜欢
      • 2019-07-20
      • 2023-01-30
      • 2015-08-07
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多