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。 
這里寫圖片描述

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: 
這里寫圖片描述

最后一步就是改寫按鈕控件的事件響應:

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

最后要注意,項目編譯的時候,屬性選X64 CPU

 

 

 

            寫在后面的話 ,這里很重要,此乃精要所在

           編譯程序時,目標平台使用AnyCPU  程序會自動崩潰無提示。單步跟蹤會在這里出錯: 
            this.hWindowControl1 = new HalconDotNet.HWindowControl(); 

 

           原因是調用   halcondotnet.dll與 halcon.dll兩Dll出現的錯誤,因為我沒有裝Halcon,只用到這兩個Dll,  我用的Dll是64位的,所以編譯的時候,目標平台使用X64 即可,

       

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM