C# WPF Halcon HDevEngine混合編程


1. WPF+Halcon

引用halcondotnet.dll和hdevenginedotnet.dll

XAML中導入命名空間xmlns:halcon=”clr-namespace:HalconDotNet;assembly=halcondotnet”。輸入xmlns后,tab選擇halcon,然后再tab就自動輸入)

WPF布局,創建HWindowControlWPF窗口
2.HDevEngine

聲明
HDevEngine MyEngine = new HDevEngine(); //halcon engine
HWindow hHalconWindow; //halcon window
HDevProcedure Procedure; // 概括一個Procedure,其輸入輸出參數的數量、名字等其他信息
HDevProcedureCall ProcCall; //管理一個Procedure的實例,比如運行等其他操作

窗口加載后,設置HDevEngine的Procedure目錄 和 具體要調用Procedure名字
MyEngine.SetProcedurePath("@string path"); //如果Procedure是Lib,那么就不是目錄,而是Lib的名字,因為Lib里面包含很多Procedures
hHalconWindow = HWindowControlWPF1.HalconWindow;
Procedure = new HDevProcedure("detect_fin"); //指定具體Procedure名字
ProcCall = new HDevProcedureCall(Procedure); //實際運行的實例

設置輸入參數,運行,獲取輸出參數
Image.GrabImage(Framegrabber); //獲取圖像
ProcCall.SetInputIconicParamObject("Image", Image); //將圖像輸入Proc
ProcCall.Execute(); //執行Proc
FinRegion = ProcCall.GetOutputIconicParamRegion("FinRegion"); //獲取Proc的結果
FinArea = ProcCall.GetOutputCtrlParamTuple("FinArea"); //獲取Proc的結果


//顯示部分
Image.DispObj(hHalconWindow); //顯示圖像
hHalconWindow.SetColor("red");
hHalconWindow.DispObj(FinRegion);
hHalconWindow.SetColor("white");
hHalconWindow.SetTposition(150, 20);
hHalconWindow.WriteString("Finrea: " + FinArea.D);

3.關於參數

如果需要在不同Procedures之間傳遞參數,比如Image,則可以使用HDevEngine的Global Variables。

//設置HDevEngine的全局變量
MyEngine.SetGlobalIconicVarObject("Image", Image);
MyEngine.SetGlobalIconicVarObject("FinRegion", FinRegion);
MyEngine.SetGlobalCtrlVarTuple("FinArea", FinArea);
---------------------

轉載!!
作者:sp183207326
來源:CSDN
原文:https://blog.csdn.net/sp183207326/article/details/72876446


免責聲明!

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



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