Halcon视觉之家-51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1万|回复: 6

[已解决] HObject 用等号赋值和 copy_obj的区别

[复制链接]
  • TA的每日心情

    2018-9-7 15:06
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    2

    主题

    5

    帖子

    14

    积分

    Rank: 1

    积分
    14

    切换助手验证会员

    发表于 2018-9-7 13:39:53 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有账号?会员注册

    x
    请问这两者之间的区别是什么?
  • TA的每日心情
    开心
    昨天 09:38
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    224

    主题

    1038

    帖子

    6591

    积分

    Rank: 9

    积分
    6591

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2018-9-7 14:04:10 | 显示全部楼层
    一个是引用指向的还是原来的图像,一个是产生新的图像(克隆原图片数据)!
    这个和C#里面的引用类型是一模一样的!
  • TA的每日心情

    2018-9-7 15:06
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    2

    主题

    5

    帖子

    14

    积分

    Rank: 1

    积分
    14

    切换助手验证会员

     楼主| 发表于 2018-9-7 14:20:55 | 显示全部楼层
    绝地武士 发表于 2018-9-7 14:04
    一个是引用指向的还是原来的图像,一个是产生新的图像(克隆原图片数据)!
    这个和C#里面的引用类型是一模 ...

          我之前也是这么考虑的。因为实际用的过程中,copy_obj 耗费的时间要十几毫秒,但是等号赋值,就只有0毫秒。所以我猜等号赋值应该只是重新指向前的对像的地址。但是一直没有找到资料佐证,所以一直不敢确认。感谢大神的回复。
  • TA的每日心情
    开心
    昨天 09:38
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    224

    主题

    1038

    帖子

    6591

    积分

    Rank: 9

    积分
    6591

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2018-9-7 14:32:13 | 显示全部楼层
    xuzi_fan 发表于 2018-9-7 14:20
    我之前也是这么考虑的。因为实际用的过程中,copy_obj 耗费的时间要十几毫秒,但是等号赋值,就只 ...

    是的,反正你记住除了值类型的数据可以直接存栈里面以外,其他的数据类型只能存堆里,而且是动态开辟的,存对象的地址即可,而Halcon的HTuple和Hobject都是Halcon重新封装的存堆里,所以都是引用类型!
    1. HTuple初始化是new HTuple()
    2. HObject初始化是gen_empty_obj()
    复制代码
    很明显gen_empty_obj内部做了new处理!
  • TA的每日心情

    2018-9-7 15:06
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    2

    主题

    5

    帖子

    14

    积分

    Rank: 1

    积分
    14

    切换助手验证会员

     楼主| 发表于 2018-9-7 14:51:30 | 显示全部楼层
    嗯嗯。了解了。多谢

    该用户从未签到

    0

    主题

    1

    帖子

    6

    积分

    Rank: 1

    积分
    6
    发表于 2021-3-16 17:42:04 | 显示全部楼层
    我测了一下 赋值是深拷贝吧 老铁
  • TA的每日心情
    开心
    昨天 09:38
  • 签到天数: 943 天

    连续签到: 1 天

    [LV.10]以坛为家III

    224

    主题

    1038

    帖子

    6591

    积分

    Rank: 9

    积分
    6591

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2021-12-3 22:56:23 | 显示全部楼层
    Shamar 发表于 2021-3-16 17:42
    **** 作者被禁止或删除 内容自动屏蔽 ****

    你见过哪种语言赋值是直接深拷贝的?而且深拷贝适合的对象是引用类型而非值类型。一般深拷贝都发生在方法内部,比如引用类型的构造函数或者Halcon里面的copy_obj方法。
    正常情况下引用类型赋值都是引用地址,数据为同一地址,所以源数据丢失全部对象都丢失。而深拷贝的目的是在内存重新再完整的拷贝一份对象数据,这就是引用类型对象完全复制的真正意义。
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver| 邮件支持|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

    本站已安全运行:

    快速回复 返回顶部 返回列表