机器视觉学习之halcon系列---一文带你理解handle变量是什么意思

今天我给大家介绍一下halcon中经常使用的数据类型:

handles

其实句柄这个概念大家一点也不陌生,在Windows的API中,涉及到很多的句柄对象,比如窗口句柄、文件、设备句柄。 其实句柄的值就是一个整形值,代表一个内存地址实例,那么在halcon中 ,handles是什么?

Halcon的底层是C语言开发的,封装了C、C++、C#等接口,在底层的C接口中,定义了复杂的数据结构,比如模板匹配、OCR、条码等,这些模型内部定义了对应的数据、内存,当我们创建的时候,会分配对应的内存空间,封装了一下就是一个句柄对象,其实这是一个内存地址,我们在创建到销毁的过程中,这个值不能够更改,大家可以看看我下面的demo,这个demo是一个封装了常用PLC协议的C接口库,上层软件调用会先创建这个句柄,内部其实是new了一个C++对象,参数输出的时候,强制转换为void*变量,void*变量的值是内存地址,是一个值。

创建句柄

机器视觉学习之halcon系列---一文带你理解handle变量是什么意思

创建句柄,分配对象空间

使用句柄

机器视觉学习之halcon系列---一文带你理解handle变量是什么意思

使用句柄,转换句柄对象,转换为内部对象

销毁句柄

机器视觉学习之halcon系列---一文带你理解handle变量是什么意思

销毁对象,释放空间

我们明白了上面的句柄创建过程,我们再理解halcon中的各种句柄,比如在模板匹配中handle,我们可以通过read_shape_model从本地读取模板文件,这个算子输出一个句柄对象,也可以通过create_shape_model用模板图片创建,这个算子输出一个匹配的句柄,不管是读取的还是创建的句柄,我们在后期直接使用这个句柄ID,比如通过get_shape_mode_contour获取轮廓,通过find_shape_mode查找图中的模板 匹配点,都需要使用这个句柄对象。其他的句柄对象,不如OCR、BarCode等,使用方法都是先创建或者读取句柄对象,然后使用这个句柄对象。记住,

使用的了句柄,一定要释放,通过clear_*释放,否则要内存泄露

机器视觉学习之halcon系列---一文带你理解handle变量是什么意思

常用的句柄

知道这些基础知识,对你后期开发有很大的帮助。


分享到:


相關文章: