【halcon】C# halcon 内存暴增 续,找到一个解决方案

20 篇文章 10 订阅 ¥79.90 ¥99.00

这里写自定义目录标题

背景

在之前的文章《【halcon】C# halcon 内存暴增 》中我们提到了一些会导致内存暴增的原因。
其中一个就是使用了计算复杂的算子,且图片很大时,此时内存就会暴增,而且内存无法被释放。
这次,我在做一个项目时,用到了模板匹配,相机用的是线扫相机,扫描的距离很差所以图片很大。
在使用了FindScaledShapeModels这个算子之后,内存一下飙到了8G,而且内存一直就下不来了,当再次运行模板匹配时,halcon就报内存不足的错误了!
在这里插入图片描述
但是当我,调用了一个函数之后,这个内存居然被释放了!
在这里插入图片描述

释放临时缓存

当我调用了这句话之后,内存立马就被释放掉了!!!!
HOperatorSet.SetSystem(“temporary_mem_cache”, “false”);

我找到了帮助文档,并让AI帮我翻译了一下:

“temporary_mem_cache”的参数,该参数用于控制临时内存缓存的工作模式。临时内存

  • 14
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Halcon中的彩色图转换为Bitmap时报错内存损坏的原因可能有几个。 首先,可能是因为彩色图像数据的大小超出了Bitmap所能容纳的范围。Bitmap对象在内存中存储图像数据时,需要根据每个像素的颜色深度(比特数)来分配内存空间。如果彩色图像的数据量过大,超出了Bitmap所能表示的范围,就会导致内存损坏的问题。此时可以尝试使用更适合存储大型图像数据的数据结构,如字节数组来存储彩色图像数据,而不是直接转换为Bitmap。 其次,可能是在彩色图像转换为Bitmap的过程中,数据类型不匹配引发内存损坏。Halcon中的彩色图像数据通常使用三维数组表示,而Bitmap对象需要使用连内存空间来存储图像数据。如果在转换过程中没有正确处理数据类型或者数据维度,就会导致内存损坏的问题。此时可以检查代码中的数据类型转换操作,确保数据转换的正确性。 另外,可能是转换过程中发生了内存溢出或越界访问等问题,导致内存损坏。在处理大型图像数据时,应该合理分配内存空间,尽量避免大量临时变量的创建和释放,以及数组的越界访问等操作。可以尝试使用更高效的算法或者数据结构来处理图像数据,以减少内存的使用量。 总之,当Halcon中的彩色图转换为Bitmap时报错内存损坏,需要仔细检查代码中的数据类型转换、内存分配和访问等操作,确保操作正确,并合理优化内存使用,避免内存溢出或越界访问等问题的发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

code bean

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值