主页 > 软件开发  > 

【halcon】halcon函数文件以及脚本引擎如何调用外部函数文件下篇

【halcon】halcon函数文件以及脚本引擎如何调用外部函数文件下篇
前言

上次在文章《halcon 函数文件 以及 脚本引擎如何调用外部函数文件 上篇》 中讲到如何halcon去封装一个算子。 这篇下篇,承接上篇讲述C#如何使用halcon引擎调用自己封装好算子。 这样的好处很明显: 1 不用修改C#代码,更新脚本就能改变算法。免去了一个翻译过程,代码也容易维护。 2 可以利用halcon对脚本进行加密。 目前发现的一个坏处:无法主动释放内存,当调用计算量很大算子,或者图片很大时,内存会飙升很快。

具体使用 1 引用dll

首先需要引用dll: hdevenginedotnet.dll

2 指定halcon脚本路径

我们需要把我们封装好的算子们,放在一个路径下面,然后告诉halcon脚本引擎,这个目录:

//实例化一个halcon脚本引擎 public HDevEngine hDevEngine = new HDevEngine(); //指定脚本(外部算子)路径 hDevEngine.SetProcedurePath(HalconScriptDir); 3 加载脚本 HDevProcedure procedure = new HDevProcedure("mytest");

mytest,这个是算子的名称,这里不用加后缀,由于第二步中指定了路径,那么此时HDevProcedure类会在指定路径下寻找这个算子。具体如何封装这个算子请参考《上篇》

算子的调用

加载完算子之后,就可以调用算子了。一个算子最多会有四种类型参数。 1 输入图片类型 2 输入控制类型 3 输出图片类型 4 输出控制类型 所以,我们也要四种函数,去 设置/获取 这四种类型的参数。

procedureCall = new HDevProcedureCall(procedure); //设置输入图片类型 procedureCall.SetInputIconicParamObject("Image", img);//输入图像 procedureCall.SetInputIconicParamObject("RegionPT", RegionPT);//输入平台区域 //设置输入控制参数 procedureCall.SetInputCtrlParamTuple("posType", posType); procedureCall.SetInputCtrlParamTuple("minLen",5); procedureCall.SetInputCtrlParamTuple("maxLineWidth",6); procedureCall.SetInputCtrlParamTuple("contrast",7); //运行函数 procedureCall.Execute(); //获取输出图片类型 MarkRegion = procedureCall.GetOutputIconicParamObject("MarkRegion"); len = procedureCall.GetOutputCtrlParamTuple("len");

不过对于获取输出halcon引擎还提供了两个函数封装

procedureCall.GetOutputIconicParamVector procedureCall.GetOutputIconicParamImage procedureCall.GetOutputCtrlParamVector

貌似是可以从一个数组里获取一个对象,参数既可以传int类型,也可以是string 类型。(有空再研究吧)

小结

调用halcon引擎还是相当简单的,后续有新的内容或者体会,再丰富进来!

标签:

【halcon】halcon函数文件以及脚本引擎如何调用外部函数文件下篇由讯客互联软件开发栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【halcon】halcon函数文件以及脚本引擎如何调用外部函数文件下篇