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

       

相關文章
相關標籤/搜索