【四】3D Object Model之创建Creation——serialize_object_model_3d()/set_object_model_3d_attrib()算子


😊😊😊欢迎来到本博客😊😊😊

🌟🌟🌟 Halcon算子太多,学习查找都没有系统的学习查找路径,本专栏主要分享Halcon各类算子含义及用法,有时间会更新具体案例。

😊😊😊 具体食用方式:可以点击本专栏【Halcon算子快速查找】–>搜索你要查询的算子名称;或者点击Halcon算子汇总博客,即可食用。

🎁🎁🎁支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!😙😙😙


学习目标

  • serialize_object_model_3d()
  • set_object_model_3d_attrib()

学习内容

算子简介

函数名解释
serialize_object_model_3d()序列化三维对象模型。
set_object_model_3d_attrib()设置三维对象模型的属性。

1、serialize_object_model_3d()

  serialize_object_model_3d( : : ObjectModel3D : SerializedItemHandle)

  函数说明: serialize_object_model_3d将3D对象模型的数据进行序列化。使用write_object_model_3d的文件格式'om3'写入文件的相同数据被转换为一个序列化的项。3D对象模型由ObjectModel3D句柄定义。序列化的3D对象模型通过SerializedItemHandle句柄返回,可以通过deserialize_object_model_3d进行反序列化。

  函数参数:
    ObjectModel3D输入 3D对象模型句柄;
    SerializedItemHandle输出序列化项句柄;

Halcon例程


2、set_object_model_3d_attrib()

  set_object_model_3d_attrib( : : ObjectModel3D, AttribName, AttachExtAttribTo, AttribValues : ObjectModel3DOut)

  函数说明: set_object_model_3d_attrib函数用于将给定的标准属性或AttribName中的扩展属性设置为ObjectModel3D的值,并返回具有新属性值的3D对象模型ObjectModel3DOutset_object_model_3d_attribset_object_model_3d_attrib_mod相同唯一的区别在于前者创建一个新的3D对象模型,而不修改原始的3D对象模型。可以通过设置参数AttachExtAttribTo,将扩展属性的值附加到已存在的标准属性上:
    对于标准属性,AttachExtAttribTo参数将被忽略。如果AttribName中的属性不存在,则会尝试创建它们。如果设置已存在的属性,AttribValues的长度必须与现有属性值匹配
    在这种情况下,现有的属性值将被替换。如果使用AttachExtAttribTo将扩展属性附加到已存在的标准属性上,则AttribValues的长度必须与现有的属性值匹配。

  函数参数:
    ObjectModel3D输入 3D对象模型句柄;
    AttribName输入属性名,具体如下表:

属性名解释
point_coord_x使用AttribValues设置3D点的x坐标。如果该属性不存在,则必须一次性使用’point_coord_x’、'point_coord_y’和’point_coord_z’设置x、y和z坐标。x、y和z坐标的数量必须相同。
point_coord_y使用AttribValues设置3D点的y坐标。如果该属性不存在,则必须一次性使用’point_coord_x’、'point_coord_y’和’point_coord_z’设置x、y和z坐标。x、y和z坐标的数量必须相同。
point_coord_z使用AttribValues设置3D点的z坐标。如果该属性不存在,则必须一次性使用’point_coord_x’、'point_coord_y’和’point_coord_z’设置x、y和z坐标。x、y和z坐标的数量必须相同。
point_normal_x使用AttribValues设置3D点的x分量法线。如果该属性不存在,则必须一次性使用’point_normal_x’、'point_normal_y’和’point_normal_z’设置3D点法线的x、y和z分量。x、y和z分量的数量必须与3D点的数量相同。请注意,给定的3D点法线将不会被归一化为长度为1。
point_normal_y使用AttribValues设置3D点的y分量法线。如果该属性不存在,则必须一次性使用’point_normal_x’、'point_normal_y’和’point_normal_z’设置3D点法线的x、y和z分量。x、y和z分量的数量必须与3D点的数量相同。请注意,给定的3D点法线将不会被归一化为长度为1。
point_normal_z使用AttribValues设置3D点的z分量法线。如果该属性不存在,则必须一次性使用’point_normal_x’、'point_normal_y’和’point_normal_z’设置3D点法线的x、y和z分量。x、y和z分量的数量必须与3D点的数量相同。请注意,给定的3D点法线将不会被归一化为长度为1。
triangles表示三角形的3D点的索引按照以下顺序使用AttribValues设置:AttribValues的前三个值(输入值0、1、2)表示第一个三角形,并包含三角形顶点对应的3D点的索引。第二个三个值(输入值3、4、5)表示第二个三角形,依此类推。三角形的方向是根据点索引的顺序确定的。
polygons使用AttribValues按照以下顺序设置表示多边形的3D点的索引:AttribValues的第一个值包含第一个多边形的点数量n。接下来的值(输入值1、2、…、n)包含第一个多边形的点的索引。下一个值(输入值n+1)包含第二个多边形的点数量m。接下来的m个值(输入值n+2、n+3、…、n+1+m)包含第二个多边形的点的索引,依此类推。
lines表示折线的3D点的索引按照以下顺序使用AttribValues设置:AttribValues的第一个值包含第一个折线的点数量n。接下来的值(输入值1、2、…、n)表示第一个折线的点的索引。下一个值(输入值n+1)包含第二个折线的点数量m。接下来的m个值(输入值n+2、n+3、…、n+1+m)表示第二个折线的点的索引,依此类推。所有的索引都对应已经存在的3D点。
xyz_mapping将3D点映射到图像坐标的方式是按照以下顺序使用AttribValues设置的:AttribValues的前两个值(输入值0和1)包含相应图像的宽度和高度。接下来的n个值(输入值2、3、…、n+1,其中n是3D点的数量)表示给定图像坐标中第n个点的行坐标。接下来的n个输入值(输入值n+2、n+3、…、n2+1)表示给定图像坐标中第n个点的列坐标。因此,输入值的总数是n2+2。

    AttachExtAttribTo输入定义扩展属性要附加到的位置,扩展属性是通过特殊运算符(例如distance_object_model_3d)从标准属性推导出的属性,或者用户定义的属性。扩展属性的名称是任意的,但必须以前缀‘&’开头,例如’&my_attrib’。扩展属性可以具有任意数量的浮点值。可以通过设置参数AttachExtAttribTo将扩展属性附加到已存在的3D对象模型的标准属性上。AttachExtAttribTo的以下取值是可能的:具体如下表:

属性名解释
'object' or []如果设置了此值,则指定的扩展属性在AttribName中与整个3D对象模型相关联。AttribValues中指定的值的数量没有限制。
points如果设置了此值,那么在AttribName中指定的扩展属性与对象模型的3D点相关联。在AttribValues中指定的值的数量必须与已经存在的3D点的数量相同。
triangles如果设置了此值,则在AttribName中指定的扩展属性与对象模型的三角形相关联。在AttribValues中指定的值的数量必须与已经存在的三角形的数量相同。
polygons如果设置了此值,则在AttribName中指定的扩展属性与对象模型的多边形相关联。在AttribValues中指定的值的数量必须与已经存在的多边形的数量相同。
lines如果设置了此值,则在AttribName中指定的扩展属性与对象模型的线段相关联。在AttribValues中指定的值的数量必须与已经存在的线段的数量相同。

    如果在AttribName中给出了多个属性,那么AttribValues将被分成相等长度的子元组。然后,每个子元组将被分配给一个属性。例如,如果AttribName和AttribValues被设置为:

AttribName := ['&attrib1','&attrib2','&attrib3']
AttribValues := [0.0,1.0,2.0,3.0,4.0,5.0]

    即:'&attrib1' = [0.0,1.0], '&attrib2' = [2.0,3.0], '&attrib3' = [4.0,5.0].,因此,无法在一次调用中设置多个不同长度的属性。

    AttribValues输入属性值;
    ObjectModel3DOut输出 3D对象模型结果句柄;

Halcon例程

set_object_model_3d_attrib.hdev				设置3D对象模型的属性
projective_trans_object_model_3d.hdev		对3D对象模型应用投影变换

【3D Object Model之创建Creation】 待更新算子

  • clear_object_model_3d()
  • copy_object_model_3d()
  • deserialize_object_model_3d()
  • gen_box_object_model_3d()
  • gen_cylinder_object_model_3d()
  • gen_empty_object_model_3d()
  • gen_object_model_3d_from_points()
  • gen_plane_object_model_3d()
  • gen_sphere_object_model_3d()
  • gen_sphere_object_model_3d_center()
  • read_object_model_3d()
  • serialize_object_model_3d()
  • set_object_model_3d_attrib()
  • set_object_model_3d_attrib_mod()
  • union_object_model_3d()
  • write_object_model_3d()

汇总

  本专栏博客汇总:Halcon算子汇总


🚶🚶🚶今天的文章就到这里啦~
喜欢的话,点赞👍、收藏⭐️、关注💟哦 ~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cqy阳

预祝上岸,感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值