Halcon 17与 c# 混合编程

这篇主要是C#和Halcon的混合编程,在此基础上对按键不一样功能的划分,以及图片适应窗口和从本地打开图片。

halcon源程序:
 
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
read_image (Image, 'C:/Users/Administrator/Desktop/猫.jpg')
dev_display(Image)
get_image_size(Image, Width, Height)
rgb3_to_gray(Image, Image, Image, ImageGray)
dev_display(ImageGray)
注意:写halcon程序时,若是过程当中的图片须要显示出来,则须要在每一个过程当中都添加dev_display(**)

第一步:导出C#程序,创建项目,并添加此类

//
//  File generated by HDevelop for HALCON/DOTNET (C#) Version 10.0
//
//  This file is intended to be used with the HDevelopTemplate or
//  HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c#
 
using System;
using HalconDotNet;
 
public partial class HDevelopExport
{
  public HTuple hv_ExpDefaultWinHandle;
 
  // Main procedure 
  private void action()
  {
 
    // Local iconic variables 
 
    HObject ho_Image, ho_ImageGray;
 
 
    // Local control variables 
 
    HTuple hv_Width, hv_Height;
 
    // Initialize local and output iconic variables 
    HOperatorSet.GenEmptyObj(out ho_Image);
    HOperatorSet.GenEmptyObj(out ho_ImageGray);
 
    //dev_open_window(...);
    ho_Image.Dispose();
    HOperatorSet.ReadImage(out ho_Image, "C:/Users/Administrator/Desktop/猫¨.jpg");
    HOperatorSet.DispObj(ho_Image, hv_ExpDefaultWinHandle);
    HOperatorSet.GetImageSize(ho_Image, out hv_Width, out hv_Height);
    ho_ImageGray.Dispose();
    HOperatorSet.Rgb3ToGray(ho_Image, ho_Image, ho_Image, out ho_ImageGray);
    HOperatorSet.DispObj(ho_ImageGray, hv_ExpDefaultWinHandle);
 
 
    ho_Image.Dispose();
    ho_ImageGray.Dispose();
 
  }
 
  public void InitHalcon()
  {
    // Default settings used in HDevelop 
    HOperatorSet.SetSystem("do_low_error", "false");
  }
 
  public void RunHalcon(HTuple Window)
  {
    hv_ExpDefaultWinHandle = Window;
    action();
  }
 
}
 

2.创建c#工程

在VS中新建一个c#工程,记住框架要选 .NET Framework 4,不要手贱看到还有高版本的4.5就跑去选4.5编程

在“设计”中完成如下设计: 
这里写图片描述 
如何添加按钮,在这里就很少说了。 
上面的那个控件是HWindowsControl。 
这里写图片描述c#

3.工具箱中添加Halcon窗口工具(首次使用须要)

若是是首次使用Halcon和c#混合编程,则须要向VS的工具箱中添加Halcon窗口工具HWindowControl。添加的方法是在“视图”->“工具箱”-> “全部Windows窗体”中右击,选择“选择项” 
这里写图片描述 
在弹出窗口中选择“浏览” 
这里写图片描述 
在MVTech安装目录下查找:halcon12.0\bin\dotnet20或dotnet35文件夹,我这里是选的dotnet35文件夹,应该是和VS的版本相匹配。 
找到文件夹下halcondotnet.dll添加便可。 
这里写图片描述框架

4.程序改写

接下来就是很是重要的程序改写阶段啦。 
首先在程序头添加工具

using HalconDotNet;

接下来是一个坑,向namespace中添加导出的Halcon c#代码时必定得注意:必须把导出的代码放在控件的代码段后面。不然就会弹个错!!! 
喏就是它了,public partial class HDevelopExport: 
这里写图片描述post

最后一步就是改写按钮控件的事件响应:this

private void Open_Click(object sender, EventArgs e) { HDevelopExport HD = new HDevelopExport(); HD.RunHalcon(hWindowControl1.HalconWindow); }

最后要注意,项目编译的时候,属性选X64 CPU
spa

 

 

 

            写在后面的话 ,这里很重要,此乃精要所在设计

           编译程序时,目标平台使用AnyCPU  程序会自动崩溃无提示。单步跟踪会在这里出错: 
            this.hWindowControl1 = new HalconDotNet.HWindowControl(); 3d

 

           缘由是调用   halcondotnet.dll与 halcon.dll两Dll出现的错误,由于我没有装Halcon,只用到这两个Dll,  我用的Dll是64位的,因此编译的时候,目标平台使用X64 便可,code

       

相关文章
相关标签/搜索