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