c#,halcon混合编程方式

方式一:c#代码中手动调用halcon算法库

优点:代码简洁易阅读,算法效率最佳
缺点:难以调试,且需要自己记得释放对象,影响工作效率,不推荐使用此方式

方式二:halcon软件把程序或者函数导成c#代码

1.程序即hdev文件导成c#代码

只需要action方法里的代码

优点:方便调试,算法执行效率高
缺点:代码较难阅读,代码量较多

建议: halcon开发中提前将交互变量规范化,逻辑判断尽量在halcon上写好,减少halcon导成c#代码后的c#代码改动,提高开发效率

2.外部函数即hdvp文件导成c#代码

优点:方便调试,算法执行效率高
缺点:代码较难阅读,代码量较多,调试时需写主方法程序进行联合调试

方法Test就是halcon外部函数Test的定义

方式三:c#调用halcon引擎

1.调用halcon程序即hdev文件(不可以设置输入参数,仅可获取输出参数)
            HDevProgram hDevProgram = new HDevProgram(programPath + hDevProgramFileName);
            HDevProgramCall hDevProgramCall = new HDevProgramCall(hDevProgram);//halcon程序调用类
            hDevProgramCall.Execute();//执行算法
            double radiu= hDevProgramCall.GetCtrlVarTuple("radiu").D;//获取变量值

优点:在进行算法迭代时只需迭代hdvp文件,而不需要更改c#代码,开发效率高

缺点:调用耗时较长,hdvp文件要随运行环境迁移

2.调用halcon外部函数即hdvp文件(可设置输入参数,也可以获取输出参数)

            HDevEngine devEngine = new HDevEngine();//引擎类
            devEngine.SetProcedurePath(procedurePath);//设置外部函数文件调用路径
            HDevProcedure hDevProcedure = new HDevProcedure(hDevProcedureName);//hdvp文件名(方法名称)
            hDevProcedureCall = new HDevProcedureCall(hDevProcedure);//外部函数调用类            
            hDevProcedureCall.SetInputIconicParamObject("in_image", GetHObject());//设置输入参数

            hDevProcedureCall.Execute();//执行算法      

            double radiu= hDevProcedureCall.GetOutputCtrlParamTuple("radiu").D;//获取输出参数

优点:在进行算法迭代时只需迭代hdvp文件,而不需要更改c#代码,开发效率高

缺点:调用halcon引擎耗时长,hdvp文件要随运行环境迁移

建议:可使用多线程处理图像算法
 


 

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值