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

C#+Halcon 检测稳定性提升的方式

前言

众所周知,C#是一个带垃圾回收机制的语言,开发过程中不需要考虑垃圾回收,你就可劲造吧。但我们在设计图像处理软件时,应时刻对图像等大内存资源进行管控,做到自行管控,及时释放,不应将其交由GC进行回收,遵循C++的开发原则

实际开发过程中,若全部图像都由GC进行回收,会导致以下两点问题:

1)内存波动性大,CPU处理密集时,内存会呈现断崖式起伏

2)算法检测时间极其不稳定,由于GC时回收大内存导致

所以开发过程中,应遵循以下几个原则:

一、谁用谁销毁

自己创建对象(Image/Region/XLD/ObjectModel3D等),谁创建的谁销毁(前提是外部不需要使用的情况),自行使用完及时执行Dispose操作



            HImage image = new HImage("byte", 16384, 3000);
            HRegion region = image.Threshold((double)0, 255);

            //do someting

            region.Dispose();
            image.Dispose();

二、谁用谁新建

假设说某处创建的对象,另一处需要使用,另一处的应自己new一份进行使用,使用完毕后自己Dispose掉(halcon在设计时大部分对象都是采用智能指针的方式,不会消耗额外的内存)


            HImage image = new HImage("byte", 16384, 3000);
            HRegion region = image.Threshold((double)0, 255);

            HImage userImage = new HImage(image);
            HImage userRegion = new HImage(region);

            region.Dispose(); //及时释放
            image.Dispose();

            //user do something
            userImage.Dispose(); //用完后释放
            userRegion.Dispose();

三、能复用地址就少创建图片

能尽量复用原有指针的情况下,就少进行内存新建,重复额外的内存开销是没必要的

参考:C#+Halcon 垂直拼接/裁切避免频繁开辟内存-CSDN博客


文章转载自:

http://CZ0jxs2W.xtqLd.cn
http://UJMngs1p.xtqLd.cn
http://2fd3POqA.xtqLd.cn
http://yv8RrWhU.xtqLd.cn
http://ksspv1ZF.xtqLd.cn
http://GKMLDZIf.xtqLd.cn
http://201DTzl7.xtqLd.cn
http://RYEAnPaL.xtqLd.cn
http://VLVggzvR.xtqLd.cn
http://MLwXazJn.xtqLd.cn
http://j0JL8anc.xtqLd.cn
http://EBZUi6hg.xtqLd.cn
http://xxlud6rw.xtqLd.cn
http://FgBHjHcm.xtqLd.cn
http://p1lmn0dH.xtqLd.cn
http://f5tznAAp.xtqLd.cn
http://Ou6gJjgP.xtqLd.cn
http://e3tXEQVo.xtqLd.cn
http://KDAc8lG5.xtqLd.cn
http://kDV3rEp7.xtqLd.cn
http://i3vRN6Z3.xtqLd.cn
http://kKEUScLG.xtqLd.cn
http://nXLVSE4n.xtqLd.cn
http://13nHyfGG.xtqLd.cn
http://Kc6FaFdg.xtqLd.cn
http://iPyCPfrH.xtqLd.cn
http://eMtmJYXw.xtqLd.cn
http://okmn45oo.xtqLd.cn
http://qtXJjXJJ.xtqLd.cn
http://TN8kGGBi.xtqLd.cn
http://www.dtcms.com/a/52870.html

相关文章:

  • docker:配置 Docker 镜像加速器
  • 计算机毕业设计SpringBoot+Vue.js校园网上店铺(源码+文档+PPT+讲解)
  • Webpack分包与合包深度解析
  • 面试基础--Spring Boot启动流程及源码实现
  • 【AI】【Unity】关于Unity接入DeepseekAPI遇到的坑
  • 全网独家:zabbixV7版本容器服务器无法访问Postgres V17数据库的问题解决
  • 启智平台华为昇腾910B 运行DeepSeek Janus-Pro-7/1B
  • 高并发应用分层架构
  • C#调用Ni板卡进行实现采集任务(模拟量输入输出)示例1
  • 分布式事务【整理、总结】
  • 请解释 HTTP 中的状态码,常见的状态码有哪些?
  • C++ 学习(八)(模板,可变参数模板,模板专业化(完整模板专业化,部分模板专业化),类型 Traits,SFINAE(替换失败不是错误),)
  • MyBatis框架之映射文件加载方式
  • Notepad++ 8.6.7 安装与配置全攻略(Windows平台)
  • Python-04BeautifulSoup网络爬虫
  • IO学习day3
  • 【Java 基础】-- 设计模式
  • SLAM评估工具安装及使用EVO(Ubuntu20.04安装evo)--缺少 onnx 库还有Pandas 版本不兼容解决
  • C/C++输入输出(1)
  • huggingface镜像站hf-mirror的各大AI模型文件下载
  • 【VS2019】 .Net Core 3.1 无法打开项目文件
  • 前端基础之列表渲染
  • “沂路畅通”便利服务平台:赋能同城物流,构建高效畅通的货运生态
  • Java 日期和时间
  • Vue+el-upload配置minIO实现大文件的切片并发上传、上传进度展示、失败重试功能
  • CSS定位详解上
  • java基础(算法用)
  • LINUX网络基础 [二] - 网络编程套接字,UDP与TCP
  • Ai数字人系统源码搭建 入门一站式开发
  • 日语学习-日语知识点小记-构建基础-JLPT-N4N5阶段(17):会话练习