设为首页收藏本站
授权版本:2024_07
开启左侧

Halcon图像为空,异常

[复制链接]
gungun 发表于 2023-10-19 12:03:40 | 显示全部楼层 |阅读模式

异常1

异常1
2.jpg

特地测试了一下,图像Dispose()释放之后,

使用GetImageSize算子能正常运行,
使用BinaryThreshold算子会出现图示异常,却异常捕获不到,程序直接崩溃闪退

这种情况,该怎样处理,有遇到类似情况的大神吗?


奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-10-19 14:34:22 | 显示全部楼层
gungun 发表于 2023-10-19 13:58
hobject. IsInitialized() 只能判断是否初始化.如果图像已经初始化,GenEmptyObj(out hobject);再释放hobj ...
这样有什么问题嘛?
微信截图_20231019143342.png

点评

啊啊  发表于 2023-10-26 19:21
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-10-19 13:29:18 | 显示全部楼层
加一个扩展方法,判断是否为空
  1.   public static bool IsEmpyt(this HObject hobject)
  2.         {
  3.             if (hobject == null)
  4.             {
  5.                 return true;
  6.             }
  7.             return !hobject.IsInitialized();
  8.         }
复制代码
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| gungun 发表于 2023-10-19 13:58:05 | 显示全部楼层
张满满 发表于 2023-10-19 13:29
加一个扩展方法,判断是否为空

hobject. IsInitialized() 只能判断是否初始化.如果图像已经初始化,GenEmptyObj(out hobject);再释放hobject.dispose().................之后的hobject. IsInitialized()=true
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
绝地武士 发表于 2023-10-19 14:41:04 | 显示全部楼层
gungun 发表于 2023-10-19 13:58
hobject. IsInitialized() 只能判断是否初始化.如果图像已经初始化,GenEmptyObj(out hobject);再释放hobj ...

不可能的,dispose方法源码如下:
  1. private void Dispose(bool disposing)
  2.     {
  3.       if (this.key != HObjectBase.UNDEF)
  4.       {
  5.         HalconAPI.ClearObject(this.key);
  6.         this.key = HObjectBase.UNDEF;
  7.       }
  8.       if (disposing)
  9.       {
  10.         GC.SuppressFinalize((object) this);
  11.         this.suppressedFinalization = true;
  12.       }
  13.       GC.KeepAlive((object) this);
  14.     }
复制代码
很明显key会被赋值位UNDEF,它的定义如下,肯定是为0的。
  1. public static readonly IntPtr UNDEF = IntPtr.Zero;
复制代码

而是否初始化方法的源码:
  1. public bool IsInitialized() => this.key != HObjectBase.UNDEF;
复制代码
可以看出只要不是为0就是初始化了的。

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
张满满 发表于 2023-10-19 14:46:00 | 显示全部楼层
绝地武士 发表于 2023-10-19 14:41
不可能的,dispose方法源码如下:
很明显key会被赋值位UNDEF,它的定义如下,肯定是为0的。

奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
 楼主| gungun 发表于 2023-10-19 15:04:30 | 显示全部楼层
张满满 发表于 2023-10-19 14:34
这样有什么问题嘛?

懂了
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
iKUN 发表于 2023-10-23 10:04:06 | 显示全部楼层
学习一下,谢谢分享
奖励计划已经开启,本站鼓励作者发布最擅长的技术内容和资源,流量变现就在现在,[点我]加入吧~~~Go
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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