Halcon句柄操作

前言

在Windows操作系统下,句柄代表一个标识符,通常是一个整数,和内存管理机制有关。一般句柄的命名都带有handle,使用时注意即可。对于Halcon新人而言,往往不注重句柄的清除问题,这类似于C++中new,delete一样,如果句柄不清除的话,回导致软件运行过程中占用内存越来越大。
不仅仅Halcon存在句柄,很多开放的SDK都会有句柄,比如说海康相机SDK中的handle代表相机设备句柄,通过句柄可以更改相机的参数。

句柄不释放带来的内存问题

比如说,刚新建一个halcon项目时,可以看到

for Index := 1 to 100 by 1
   dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
endfor

在这里插入图片描述
打开任务管理器可以看见,在句柄创建之前,Halcon运行内存是68.9,建立了100次窗口句柄之后,运行内存上升到83.3.可能对于工控机来说,这点内存不算什么,但是一个大型项目来说,工控机一般是不停运转的,如果没有一个好的halcon管理习惯,会对电脑操作系统带来巨大伤害。
在这里插入图片描述

Halcon中常见的句柄创建及销毁

halcon的Image等,系统会自己释放掉,但是句柄需要自己手动释放。(好消息是halcon18过后版本无需自己手动释放)

  1. 相机句柄
    打开相机句柄,需要手动关闭采集设备句柄
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'fabrik', '', 1, 2, FRHandle)
......
......
close_framegrabber (FRHandle)
  1. 模板句柄
    开辟了一个模板句柄,需要清除模板句柄
create_shape_model (Image, 'auto', -0.39, 0.79, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
......
......
clear_shape_model (ModelID)
  1. 文件句柄
    打开文件句柄,需要清除
open_file ('standard', 'output', FileHandle)
......
......
close_file (FileHandle)

其余的还有测量句柄,深度学习句柄、OCR字符句柄等等。
在halcon程序段中,要特别注意句柄的创建及销毁。
在大型C++视觉项目中,可以在类的析构函数中增加函数判断句柄是否销毁,若没有销毁的话,在
析构函数内再执行一遍句柄清除函数。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

手写不期而遇

感谢你的打赏,也欢迎一起学习

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

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

打赏作者

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

抵扣说明:

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

余额充值