c# draw halcon_C#与Halcon混合编程的几种方式

Halcon的学习过程中,关于Halcon的混合编程是无法避免的,Halcon可以和很多种语言进行混编,这里仅赘述与C#语言进行混编的一些简单方式。

C#与Halcon进行混编的方式大体可以分为:使用Halcon导出功能、面向对象的方式、Halcon引擎。

当然,除了以上方法,还有导出库工程这样的方式可以选择,这里就不再阐述。

一、Halcon导出功能

下图为使用Halcon编写的简单程序

然后点击文件-》导出,或者直接点击如下按钮

点击导出之后,选择语言为C#-Halcon/.NET,选择好导出文件的路径,则会得到一个和Halcon程序同名的.cs文件

打开.cs文件,我们看到导出的代码中有一个action的方法,这个方法是即是我们需要重点关注的部分,我们在Halcon中写的代码都在这个方法中有所实现。以下为action的代码:

1 private voidaction()2 {3

4

5 //Local iconic variables

6

7 HObject ho_Image, ho_Region, ho_ConnectedRegions;8 HObject ho_RegionDilation;9

10 //Local control variables

11

12 HTuple hv_Width = null, hv_Height = null;13 //Initialize local and output iconic variables

14 HOperatorSet.GenEmptyObj(outho_Image);15 HOperatorSet.GenEmptyObj(outho_Region);16 HOperatorSet.GenEmptyObj(outho_ConnectedRegions);17 HOperatorSet.GenEmptyObj(outho_RegionDilation);18 ho_Image.Dispose();19 HOperatorSet.ReadImage(out ho_Image, "printer_chip/printer_chip_01");20 HOperatorSet.GetImageSize(ho_Image, out hv_Width, outhv_Height);21 if(HDevWindowStack.IsOpen())22 {23 HOperatorSet.SetPart(HDevWindowStack.GetActive(), 0, 0, hv_Height, hv_Width);24 }25 ho_Region.Dispose();26 HOperatorSet.Threshold(ho_Image, out ho_Region, 128, 255);27 ho_ConnectedRegions.Dispose();28 HOperatorSet.Connection(ho_Region, outho_ConnectedRegions);29 ho_RegionDilation.Dispose();30 HOperatorSet.DilationCircle(ho_ConnectedRegions, out ho_RegionDilation, 3.5);31 if(HDevWindowStack.IsOpen())32 {33 HOperatorSet.DispObj(ho_Image, HDevWindowStack.GetActive());34 }35 if(HDevWindowStack.IsOpen())36 {37 HOperatorSet.DispObj(ho_ConnectedRegions, HDevWindowStack.GetActive());38 }39

40

41 ho_Image.Dispose();42 ho_Region.Dispose();43 ho_ConnectedRegions.Dispose();44 ho_RegionDilation.Dispose();45

46 }

action

现在,需要我们对这个代码进行简单的更改,就可以在C#的Halcon窗体控件中将其显示出来,首先,新建一个C#窗体程序,添加halcondotnet的引用,并且添加其命名空间,在主窗体上添加一个Halcon的窗体控件和一个Button控件,并在Button的Click事件对应的方法中添加如下代码即可:

代码如下:

1 namespaceHalconprogram2 {3 public partial classForm1 : Form4 {5 publicForm1()6 {7 InitializeComponent();8 }9

10 private void button1_Click(objectsender, EventArgs e)11 {12

13 //Local iconic variables

14

15 HObject ho_Image, ho_Region, ho_ConnectedRegions;16 HObject ho_RegionDilation;17

18 //Local control variables

19

20 HTuple hv_Width = null, hv_Height = null;21 //Initialize local

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值