热点推荐

查看: 870|回复: 11
收起左侧

[已解决] 引发了"HalconDotNet.HTupleAccessException"类型的异常

[复制链接]
  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
    发表于 2018-11-24 22:02:18 | 显示全部楼层 |阅读模式

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

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

    x
    本帖最后由 xixiyinhang 于 2018-11-25 23:59 编辑

    1124.png
    如上图所示的错误。我写的halcon程序是正确的,能够正常检测出结果和点位数据。但是导出成C#之后
    却出现了这样的错误,究竟是哪里出了问题?

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    昨天 10:30
  • 签到天数: 341 天

    连续签到: 2 天

    [LV.8]以坛为家I

    90

    主题

    395

    帖子

    2242

    积分

    Rank: 9

    积分
    2242

    热心会员突出贡献优质会员最佳新人

    发表于 2018-11-24 23:49:31 | 显示全部楼层
    没有问题的,HTuple是一个通用类型,里面可以传入Double和Double数组,Integer和Integer数组,String和String数组,Long和Long数组,由于你目前只是初始化,没有赋值,所以访问对应类型的数据都是空的也就是引发访问异常错误, 你可以看到Type是EMPTY为空状态且长度Length是0!当你赋值以后那么EMPTY就是自动的类型了,长度也变了,如果你写入的是字符串你可以发现S以及SArr就有值了!但是要注意你写入的是什么类型读取的时候就要根据TYPE判断然后调用对应的方法读取,比如S以及SArr即可,否则将再次引发访问异常!
  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
     楼主| 发表于 2018-11-25 21:20:59 | 显示全部楼层
    绝地武士 发表于 2018-11-24 23:49
    没有问题的,HTuple是一个通用类型,里面可以传入Double和Double数组,Integer和Integer数组,String和Stri ...

    1212121212121212.png
    虽然我很努力的的看来好几遍你的回答,但还是十分的懵逼,完全不知道到底错哪里了。
    只要是涉及到HTuple类型的全部出现了错误,比如HOperatorSet.RegionFeatures(ho_RegionClosing1, "width", out hv_velwidth);
    hv_velwidth的结果竟然是空的,这到底是哪里出了错,我需要怎么改呢?郁闷啊!

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    昨天 10:30
  • 签到天数: 341 天

    连续签到: 2 天

    [LV.8]以坛为家I

    90

    主题

    395

    帖子

    2242

    积分

    Rank: 9

    积分
    2242

    热心会员突出贡献优质会员最佳新人

    发表于 2018-11-25 21:38:58 | 显示全部楼层
    xixiyinhang 发表于 2018-11-25 21:20
    虽然我很努力的的看来好几遍你的回答,但还是十分的懵逼,完全不知道到底错哪里了。
    只要是涉及到HTuple ...

    哈哈哈,根据我的经验,你的那个ho_RegionClosing1可能是空值!你安装下Halcon的变量检测插件或者用AreaCenter去测试下区域是不是面积为0,我估计就是区域原因,所以导致数据长度为0没有得到值!
  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
     楼主| 发表于 2018-11-25 22:18:19 | 显示全部楼层
    更奇怪的是 例如HOperatorSet.GetImageSize(ho_image, out hv_Width, out hv_Height);,这个算子计算的HTUple类型的数据hv_Width和hv_Height就没有错误,
    而HOperatorSet.MinMaxGray(ho_Domain, ho_ImageSurface, 0, out hv_Min, out hv_Max,out hv_Range); 却出现了HTUple类型的结果hv_Min、hv_Max、hv_Range错误的现象。
    有的算子能用,有的算子不能用,这到底是哪里出了错,郁闷啊!!!!!!!!!!!!!

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    昨天 10:30
  • 签到天数: 341 天

    连续签到: 2 天

    [LV.8]以坛为家I

    90

    主题

    395

    帖子

    2242

    积分

    Rank: 9

    积分
    2242

    热心会员突出贡献优质会员最佳新人

    发表于 2018-11-25 22:24:33 | 显示全部楼层
    xixiyinhang 发表于 2018-11-25 22:18
    更奇怪的是 例如HOperatorSet.GetImageSize(ho_image, out hv_Width, out hv_Height);,这个算子计算的HTUp ...

    还是安装Halcon的变量检测插件监测下看看是那个导致了后面为空了没法继续了吧!https://www.51halcon.com/thread-722-1-1.html
  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
     楼主| 发表于 2018-11-25 22:29:54 | 显示全部楼层
    我把上面两个算子写在主函数中就能正常计算,单独写在一个类当中,第二个算子就会计算出错为空,*了狗了!

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    振奋
    昨天 09:25
  • 签到天数: 558 天

    连续签到: 5 天

    [LV.9]以坛为家II

    348

    主题

    1300

    帖子

    6262

    积分

    Rank: 9

    积分
    6262

    突出贡献优秀版主荣誉管理论坛元老优质会员最佳新人

    发表于 2018-11-25 22:49:51 | 显示全部楼层
    xixiyinhang 发表于 2018-11-25 22:29
    我把上面两个算子写在主函数中就能正常计算,单独写在一个类当中,第二个算子就会计算出错为空,*了狗了! ...

    麻烦仔细检查下代码是否是局部变量跨函数了导致为空然后访问了,可以使用Halcon针对VS调试的插件HALCON_Variable_Inspect.vsix 进行查看解决,位于安装目录下\misc下!
    无效附件更新 权限提升操作 删帖申请 举报以及其他需要帮助请加入QQ群:214663141 广告位招商 有意者联系
  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
     楼主| 发表于 2018-11-25 22:59:14 | 显示全部楼层
    Criss 发表于 2018-11-25 22:49
    麻烦仔细检查下代码是否是局部变量跨函数了导致为空然后访问了,可以使用Halcon针对VS调试的插件HALCON_V ...

    局部变量跨函数是啥意思啊?

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    点赞
    2019-2-27 18:42
  • 签到天数: 41 天

    连续签到: 1 天

    [LV.5]常住居民I

    7

    主题

    45

    帖子

    557

    积分

    Rank: 3

    积分
    557
     楼主| 发表于 2018-11-25 23:55:41 | 显示全部楼层
    终于赶在12点之前给解决了,其实跟这些算子能不能用没关系,是有一个变量跟别的地方重名了,中间给整了个dispose释放掉了,导致后面计算结果为空,感谢版主解答!

    发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 会员登录 | 会员注册

    本版积分规则

    经营性网站备案信息 经营性网站
    备案信息

    中国互联网举报中心 中国互联网
    举报中心

    中国文明网传播文明 中国文明网
    传播文明

    诚信网站

    深圳市市场监督管理局企业主体身份公示 工商网监
    电子标识