当前位置: 首页 > news >正文

【halcon】C# halcon 内存暴增

1 读取图片需要及时手动释放

一个6M的图片通过halcon进行加载,大约会消耗200M的内存,如果等待GC回收,而你又在不停的读取图片,你的内存占用,将在短时间内飙升。

2 halcon控件显示图片需要清空。

/// <summary>
/// 显示对象
/// </summary>
/// <param name="obj"></param>
/// <param name="bFull"></param>
public void ShowObj(HObject obj, bool bFull = true)
{hSmart?.HalconWindow.ClearWindow(); //必须清理掉不然会显示多张图片hSmart?.HalconWindow.DispObj(obj);if (bFull){hSmart?.SetFullImagePart();}
}

在显示前清空窗口,不然会覆盖显示多张图片,从而使得内存一路上涨。

3 先opening再打散

通过connection算子打散区域之前,先看看得到多少个区域,如果单个区域过多也会占用大量内存,毕竟打散之前是一个对象,打散之后可能是几万个对象。

所以,可以先对整体进行opening操作,去掉一些小杂碎,再打散就会得到更少的对象,从而减少内存的压力

4 高消耗算子

目前我遇到了两个能大量消耗内存算子,图片越大消耗的内存几乎成指数上升。

  1.  edges_sub_pix  这个函数用于找边缘非常好用,但是如果你直接对一个6M图片进行全图操作,一瞬间你可能就会消耗3个G的内存! 所以,好的做法是先通过blob进行定位,然后抠图。然后对图的局部进行edges_sub_pix,此时内存压力会小很多。
  2.  lines_gauss 这个函数用于找划痕之类的瑕疵非常好用,缺点也是计算量太大,会消耗大量的内存。但是这个函数和edges_sub_pix 还不一样。因为如果你是找划痕一般就是针对全图的,没有抠图的余地,所以如果图片很大,内存飙升就是板上钉钉。

5 halcon引擎中使用高消耗算子

我们知道使用halcon引擎是我们开放变得非常方便,但是如果在halcon引擎中使用高消耗算子,这点是非常致命的。比如在halcon引擎lines_gauss此时内存会飙升,更惨的是释放的还慢。如果不使用halcon引擎,直接调用lines_gauss虽然内存会飙升,但是属于图片占用的内存还是会立刻被释放,但是如果在halcon引擎中,这个就会释放很慢,如果连续处理图片,你的内存就会“爆炸”!多的部分会溢出到硬盘,你的硬盘读写就会飙升,然后你的电脑就卡了。

6 halcon引擎中传入图片

目前给我的感觉是,如果我封装了一个算子,然后通过halcon引擎调用,然后这个算子需要传入图片参数,这个图片传入引擎后,过很久才会被释放掉。

7 unin 输入输出(待验证)

Union2的出参和入参一致时,必须手动释放,这样才能100% 马上回收内存。

貌似大家都用遇到过这种问题,当入参和出参相同时,可能会造成内存释放缓慢。我目前还没明显体会到,有待以后验证!

8 对轮廓进行合并

如果此时有很多细小的轮廓(几千个几万个),此时将会非常耗时。 

小结

当halcon用到一个算子,消耗了3个G的内存,如果这个消耗的内存是,算子本身需要分配的内存,那么此时这片内存一般不会被释放,会一直保留在那。我感觉这是halcon的一种提升速度策略。但如果是图片加载导致的内存上升,这种一般很快就会被回收掉。

貌似,可以通过halcon提供的函数,改变这种策略,以避免内存的大量消耗,等我搞明白了再和大家分享。

相关文章:

【halcon】C# halcon 内存暴增

1 读取图片需要及时手动释放 一个6M的图片通过halcon进行加载&#xff0c;大约会消耗200M的内存&#xff0c;如果等待GC回收&#xff0c;而你又在不停的读取图片&#xff0c;你的内存占用&#xff0c;将在短时间内飙升。 2 halcon控件显示图片需要清空。 /// <summary>…...

LeetCode130. Surrounded Regions

文章目录 一、题目二、题解 一、题目 Given an m x n matrix board containing ‘X’ and ‘O’, capture all regions that are 4-directionally surrounded by ‘X’. A region is captured by flipping all O’s into X’s in that surrounded region. Example 1: Input…...

【实战教程】PHP如何轻松对接腾讯云COS,实现文件上传下载?

腾讯云提供了一系列丰富的云服务&#xff0c;其中包括对象存储&#xff08;Cloud Object Storage&#xff0c;简称COS&#xff09;&#xff0c;它是一种高可靠性、可扩展性强的云存储服务。本文将介绍如何使用PHP对接腾讯云COS存储服务&#xff0c;实现文件的上传和下载功能。 …...

pytorch学习10-网络模型的保存和加载

系列文章目录 pytorch学习1-数据加载以及Tensorboard可视化工具pytorch学习2-Transforms主要方法使用pytorch学习3-torchvisin和Dataloader的使用pytorch学习4-简易卷积实现pytorch学习5-最大池化层的使用pytorch学习6-非线性变换&#xff08;ReLU和sigmoid&#xff09;pytorc…...

SQL Server 2016(分离和附加数据库)

1、实验环境。 基于上一个实验《SQL Server&#xff08;创建数据库&#xff09;》 2、需求描述。 class数据库的数据文件和事务日志文件都位于C:\db_class目录下。现在需要把class数据库的数据文件和事务日志文件分开存放&#xff0c;数据文件class.mdf存放于原位置&#xff0…...

用友U8 Cloud RegisterServlet SQL注入漏洞复现

0x01 产品简介 用友U8 Cloud是用友推出的新一代云ERP,主要聚焦成长型、创新型企业,提供企业级云ERP整体解决方案。 0x02 漏洞概述 用友U8 Cloud RegisterServlet接口处存在SQL注入漏洞,未授权的攻击者可通过此漏洞获取数据库权限,从而盗取用户数据,造成用户信息泄露。 …...

coding创建远程分支。并拉取远程新分支+推送代码

进入coding ----项目----代码仓库---点击 下拉之后查看全部----创建分支 创建分支之后执行下面命令 git branch -a // 查看所有分支 这个时候发现自己创建的分支没有显示这是因为自己在远程创建了分支但是本地还没有分支 执行 git fetch命令 用于从远程仓库获取最新的提交…...

坚鹏:中国工商银行内蒙古分行数字化转型发展现状与成功案例培训

中国工商银行围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局&#xff0c;深入推进数字化转型&#xff0c;加快形成体系化、生态化实施路径&#xff0c;促进科技与业务加速融合&#xff0c;以“数字工行”建设推动“GBC”&#xff08;政务、企业、个人&…...

AIGC发展史

1 AIGC概况 1.1 AIGC定义 AIGC&#xff08;AI Generated Content&#xff09;是指利用人工智能技术生成的内容。它也被认为是继PGC,UGC之后的新型内容生产方式&#xff0c;AI绘画、AI写作等都属于AIGC的具体形式。2022年AIGC发展速度惊人&#xff0c;迭代速度更是呈现指数级发…...

面试题库之JAVA基础篇(二)

String 只读字符串。每次操作会隐式的在内存中new一个跟原字符串一样的StringBuilder对象&#xff0c;然后append号后面的字符串。 StringBuilder 可变字符串对象。线程不安全。 StringBuffer 可变字符串对象。线程安全。 数组 一种线性数据结构&#xff0c;使用连续的…...

[Rust] 可迭代类型, 迭代器, 如何正确的创建自定义可迭代类型

在 Rust 中, for 语句的执行依赖于类型对于 IntoIterator 的实现, 如果某类型实现了这个 trait, 那么它就可以直接使用 for 进行循环. 直接实现 在 Rust 中, 如果一个类型实现了 Iterator, 那么它会被同时实现 IntoIterator, 具体逻辑是返回自身, 因为自身就是迭代器. 但是如…...

MySQL中,text,mediumtext, 和 longtext字符类型

需求 由于项目需要&#xff0c;需要在mysql数据库&#xff0c;储存长文本&#xff0c;长文本格式可能为markdown也可能为html。 思路 测试存入html时&#xff0c;字符类型为varcar 255。很明显字符长度达不到要求。数据库抛错&#xff0c;修改字符类型 解决方案 将原本的字…...

网页开发 JS基础

目录 JS概述 基本语法 数据类型内置方法 DOM对象 查找标签 绑定事件 操作标签 jQuery 查找标签 绑定事件 操作标签 Ajax请求 数据接口 前后端分离 ajax的使用 JS概述 一门弱类型的编程语言,属于基于对象和基于原型的脚本语言. 1 直接编写<script>console…...

如何在财税行业查找批量客户?

现在市场上代记账公司也不算少&#xff0c;做过这行的都知道&#xff0c;最初呢行业竞争不强&#xff0c;都是靠地推、老客户转介绍&#xff0c;或者长期以往的蹲守各个地区的工商注册服务中心&#xff0c;找那些才注册企业的老板或者创业者。但是&#xff0c;随着市场经济的发…...

IntelliJ IDEA详细完整安装教程

IntelliJ IDEA 是一款强大的Java集成开发环境&#xff0c;以下是安装和使用教程&#xff1a; 1. 下载IntelliJ IDEA&#xff1a;访问JetBrains官网&#xff08;jetbrains.com&#xff09;&#xff0c;点击“Download”按钮&#xff0c;选择适合自己操作系统的版本进行下载。 2.…...

【.NET Core】Linq查询运算符(一)

【.NET Core】Linq查询运算符&#xff08;一&#xff09; 文章目录 【.NET Core】Linq查询运算符&#xff08;一&#xff09;一、概述二、筛选数据三、投影运算3.1 Select 3.2 SelectMany3.3 Zip3.4 Select 与 SelectMany 四、Set&#xff08;设置&#xff09;运算4.1 Distinct…...

Python sorted函数及用法以及如何用json模块存储数据

Python sorted函数及用法 sorted() 函数与 reversed() 函数类似&#xff0c;该函数接收一个可迭代对象作为参数&#xff0c;返回一个对元素排序的列表。 在交互式解释器中测试该函数&#xff0c;可以看到如下运行过程&#xff1a; >>> a [20, 30, -1.2, 3.5, 90, 3.…...

使用opencv将sRGB格式的图片转换为BT.2020格式【sRGB】【BT.2020】

将sRGB格式的图片转换为BT.2020格式涉及到两个步骤&#xff1a;首先将sRGB转换到线性RGB&#xff0c;然后将线性RGB转换到BT.2020。这是因为sRGB图像通常使用伽马校正&#xff0c;而BT.2020工作在线性色彩空间中。 从sRGB到线性RGB&#xff1a;sRGB图像首先需要进行伽马校正解码…...

聊天注意事项

聊天成功的核心就是双方都能舒服 有些人不会聊天是缺乏引导性 聊天聊两句话就没了 聊天要把话题引导向对方 从倾诉者变为倾听者 才能不断交流 沟通不是一个人的独角戏 每个人都渴望被理解 要注意倾听别人说的话 不要只顾自己说一大堆&#xff0c;别人都瞌睡了 不要查户口式问…...

12.5 作业

1&#xff0c; 以下是一个简单的比喻&#xff0c;将多态概念与生活中的实际情况相联系&#xff1a; 比喻&#xff1a;动物园的讲解员和动物表演 想象一下你去了一家动物园&#xff0c;看到了许多不同种类的动物&#xff0c;如狮子、大象、猴子等。现在&#xff0c;动物园里有…...

C++ 虚表与多态:从源码到汇编的逐步解析

本文基于代码随想录最强八股文给出的 C 源码与对应的 x86-64&#xff08;System V ABI 风格&#xff09;反汇编&#xff0c;按“程序运行流程”一步步解释&#xff1a; 对象内存里 vptr&#xff08;虚表指针&#xff09; 在哪构造函数如何 写入 vptrAnimal* 指针如何通过 vtabl…...

OpenClaw配置备份指南:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型参数迁移方案

OpenClaw配置备份指南&#xff1a;Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型参数迁移方案 1. 为什么需要备份OpenClaw配置 上周我的主力开发机突然硬盘故障&#xff0c;导致精心调校三个月的OpenClaw配置全部丢失。最痛心的不是框架重装&#xff0c;而是那些…...

从单颗粒到多相流:OpenFOAM+LIGGGHTS耦合参数调优心得与性能分析

从单颗粒到多相流&#xff1a;OpenFOAMLIGGGHTS耦合参数调优实战指南 在颗粒-流体耦合模拟领域&#xff0c;OpenFOAM与LIGGGHTS的组合已成为工业级仿真的黄金标准。但当我们从教学案例转向真实工程场景时&#xff0c;参数敏感性、计算效率与物理真实性之间的平衡往往成为困扰研…...

python-flask-djangol框架的旅游导游管理系统的功能全bja0vffx

目录功能模块设计技术实现方案前端交互实现部署与测试方案项目进度规划项目技术支持源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作功能模块设计 旅游导游管理系统基于Python Flask/Django框架开发&#xff0c;需包含以下核心功能模块&…...

解决了黄金价格api数据源不稳定的问题

最近在做一个实时金融数据项目&#xff0c;我比较关心的就是黄金价格的稳定获取。起初&#xff0c;我用的一些常规接口总会出现延迟或者返回空数据的情况。页面显示几秒前的价格&#xff0c;或者直接空白&#xff0c;让我意识到&#xff1a;稳定可靠的黄金价格api比漂亮的图表更…...

高效掌握Mermaid:从文本到可视化的实战指南

高效掌握Mermaid&#xff1a;从文本到可视化的实战指南 【免费下载链接】mermaid mermaid-js/mermaid: 是一个用于生成图表和流程图的 Markdown 渲染器&#xff0c;支持多种图表类型和丰富的样式。适合对 Markdown、图表和流程图以及想要使用 Markdown 绘制图表和流程图的开发者…...

Anthropic提示工程教程:从入门到精通的完整指南

Anthropic提示工程教程&#xff1a;从入门到精通的完整指南 【免费下载链接】prompt-eng-interactive-tutorial Anthropics Interactive Prompt Engineering Tutorial 项目地址: https://gitcode.com/GitHub_Trending/pr/prompt-eng-interactive-tutorial Anthropic的交…...

Drizzle ORM性能优化终极指南:查询优化与缓存策略详解

Drizzle ORM性能优化终极指南&#xff1a;查询优化与缓存策略详解 【免费下载链接】drizzle-orm drizzle-team/drizzle-orm: 是一个基于 C 的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;支持 MySQL 和 SQLite 数据库。适合对 C、数据库开发以及想要使用轻量级 ORM…...

OpenClaw自动化写作助手:基于GLM-4.7-Flash的草稿生成与润色

OpenClaw自动化写作助手&#xff1a;基于GLM-4.7-Flash的草稿生成与润色 1. 为什么需要自动化写作助手 作为一个长期与文字打交道的内容创作者&#xff0c;我经常面临这样的困境&#xff1a;明明有好的选题灵感&#xff0c;却卡在初稿阶段耗费大量时间&#xff1b;或是写完后…...

Ubuntu服务器中文乱码终极解决方案:从locale配置到阿里云重启避坑指南

Ubuntu服务器中文乱码终极解决方案&#xff1a;从locale配置到阿里云重启避坑指南 当你第一次在Ubuntu服务器上看到中文字符变成一堆问号或方框时&#xff0c;那种困惑和挫败感我深有体会。特别是在云服务器环境下&#xff0c;问题往往比本地环境更复杂——即使按照常规教程操作…...