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
C# WPF Halcon HDevEngine混合编程的更多相关文章
- Halcon C++混合编程学习之Qt 实现检测焊接点
1 # include "HalconCpp.h" # include "HDevThread.h" # include <X11/Xlib.h> ...
- halcon与C#混合编程进阶版
这篇主要是C#和Halcon的混合编程,在此基础上对按键不同功能的划分,以及图片适应窗口和从本地打开图片. 新手来这里:http://www.cnblogs.com/badguy518/p/55150 ...
- Halcon 17与 c# 混合编程
这篇主要是C#和Halcon的混合编程,在此基础上对按键不同功能的划分,以及图片适应窗口和从本地打开图片. halcon源程序: dev_open_window(0, 0, 512, 512, ' ...
- C# Halcon混合编程中遇到的问题(一)
目标平台 安装64位的halcon的情况下,目标平台必须使用x64而不能使用x86 目标框架 不能使用.Net Framework Client版本,有一些必须的程序集会缺失,测试使用.Net Fra ...
- WPF(C#)与MATLAB混合编程
WPF(C#)与MATLAB混合编程 WPF可以为开发者提供便捷地构建用户交互界面的解决方法,而matlab则在科学计算方面有着无与伦比的优势,因此在一些需要将科学算法转换为应用软件的项目中,需要应用 ...
- 如玫瑰一般的PHP与C#混合编程
故事背景是这样的,有一套项目,服务器端是用C#写的,为了完成某种事情,它需要使用到一个组件,这个组件很小但很重要,很不巧的是,这个这个组件是用PHP语言写的,如果为了使用这个组件而专门搭建一个PHP的 ...
- C和C++混合编程中的extern "C" {}
引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif ...
- C# 托管和非托管混合编程
在非托管模块中实现你比较重要的算法,然后通过 CLR 的平台互操作,来使托管代码调用它,这样程序仍然能够正常工作,但对非托管的本地代码进行反编译,就很困难. 最直接的实现托管与非托管编程的方法就是 ...
- [转载:]C#与Fortran混合编程之本地调用Fortran动态链接库
前言 C#发展到现在,已是一门相当完善的语言,他基于C语言风格,演化于C++.并依靠强大的.NET底层框架.C#可以用来快速构建桌面及Web应用.然而在我们的实际工作中,尽管C#已经非常完善,但还是不 ...
随机推荐
- jquery基础学习之动画篇(四)
一,动画效果 hide() show() 隐藏与显示 hide(options) 隐藏 对应display:none,有参数就会变成动画, $(document).click(function () ...
- LeetCode 892 Surface Area of 3D Shapes 解题报告
题目要求 On a N * N grid, we place some 1 * 1 * 1 cubes. Each value v = grid[i][j] represents a tower of ...
- 20165213&20165225结对学习感想及创意照
20165213&20165225结对学习感想及创意照 会JAVA的大学生活好小组 团队感悟: 1+1>2还是1+1<2? 上述两个观点实际没有对错之分,取决点在于个人见解. 相信 ...
- excel之导出
1.Maven依赖的jar包 <dependency> <groupId>org.apache.poi</groupId> <artifact ...
- DER、CRT、CER、PEM格式的证书及转换
一.证书和编码 X.509证书,其核心是根据RFC 5280编码或数字签名的数字文档. 实际上,术语X.509证书通常指的是IETF的PKIX证书和X.509 v3证书标准的CRL 文件,即如RFC ...
- java的错题整理
为了阅读方便,我们写代码时要缩进,以便于更好的理解代码 对象是是具有相同属性和共同行为的一组类的实例,不是集合. B是标准格式,D没有对象接收它,所以这样子. boolean的默认值是false如果一 ...
- 10.5-uC/OS-III内部任务(时基任务OS-TickTask())
几乎所有的实时系统都需要有一个能提供周期性时间的时间源,叫做时基周期或系统周期. uC/OS-III的时基周期处理程序封装在OS_TICK.C文件中. OS_TickTask()任务被uC/OS-II ...
- 用python发邮件实例
发QQ邮件 首先确认发件方是否打开了SMTP服务,去QQ邮箱的设置中查看,如果没有请自行开启. from email.header import Header from email.mime.text ...
- 最少步数(bfs)
最少步数 时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 ...
- 两种ps切图方法(图层/切片)
两种Ps切图方法 一. 基础操作: a) Ctrl++ 放大图片,ctrl - -缩小图片 b) 按住空格键space+,点击鼠标左键,拖动图片. c) 修改单位,点击编辑 ...