C#中直接调用halcon的.hdev文件的函数【附源码】


前言

我们在对halcon二次开发嵌入到c++或者c#的时候都是在编译的时候把halcon算子编辑好的,但是我们还可以在发布使用的时候直接调用hdev文件来处理随时修改算法。不需要重新编译。
本次基于C#和halcon的配合使用


一、引入.net库

本次引用的halcon库不仅仅是halcondotnet.dll,还需要引入hdevenginedotnet.dll

二、代码示例

1.halcon代码

lowNum:=0
maxNum:=50
MyDecompose (Image, Image1, Image2, Image3, Region, lowNum, maxNum, Number)
MyDecompose_Password (Image, Image1, Image2, Image3, Region, lowNum, maxNum, Number)

2.C# 代码

static void Main(string[] args)
{
    //加载halcon程序
    HDevProgram program = new HDevProgram("1.hdev");
    //获取变量名称内容 low  high   size  Number
    HTuple hParamName = program.GetCtrlVarNames();
    //获取子函数名称   runImage   scale_image_range
    HTuple hFunName = program.GetLocalProcedureNames();
    //选择要执行的子函数
    HTuple hfName = hFunName.TupleSelect(1);
    HDevProcedure hpd = new HDevProcedure(program, hfName);
    //设置子函数输入参数
    HDevProcedureCall hpdc = hpd.CreateCall();
    hpdc.SetInputCtrlParamTuple("lowNum", 0);
    hpdc.SetInputCtrlParamTuple("maxNum", 100);
    HObject ho_Image;
    HOperatorSet.ReadImage(out ho_Image, "1.png");
    hpdc.SetInputIconicParamObject("Image",ho_Image);
    //执行halcon 算子
    hpdc.Execute();
    //获取函数运行的对象结果
    HObject HO1 = hpdc.GetOutputIconicParamObject("Image1");
    HTuple Number = hpdc.GetOutputCtrlParamTuple("Number");
    HOperatorSet.WriteImage(HO1, "bmp", 0, "2.bmp");
    int Num = Number.I;


    也可以直接运行函数在halcon内部设置好参数
    //HDevProgramCall hc1 = program.Execute();
    //HTuple vd = hc1.GetCtrlVarTuple("Number");
}

总结

源码:C#调用hdev文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱学习的广东仔

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值