二.HALCON与C#混合编程的方法
1. HALCON软件的特点
HALCON是德国MVtec公司开发的一套完善的机器视觉算法包,拥有灵活的机器视觉集成开发环境,用户可快速完成图像处理与分析的开发工作。在欧洲以及日本工业界公认HALCON软件是最佳机器视觉软件。
HALCON软件有一千多个独立的函数,其中包含了各类滤波、几何转换、形态学计算分析、校正、分类辨识、形状搜寻等功能,应用范围涵盖工业监控、自动化检测、医学检测、遥感探测等领域。
HALCON软件支持Windows、Linux和Mac OS X操作环境。整个函数库可以用C、C++、C#、Visual basic和Delphi等多种编程语言调用。HALCON软件为百余种工业相机和图像采集卡提供了接口。
HALCON软件提供了一套交互式程序开发工具HDevelop,可在其中以HALCON程序代码直接编写、修改、执行程序,并且可以查看计算过程中的所有变量。设计、调试完成后,可以直接输出C、C++、VB、C#等程序代码,嵌入用户的程序中。
HDevelop提供了数百个例程。可以根据应用范围、应用领域、函数类型3个途径检索到合适的例程。此外,HDevelop还配有以问题为导向的手册和在线帮忙功能。
2. 一个完整的HALCON程序
HALCON程序和BASIC语言类似,函数名直接反映函数功能,容易理解。下面的程序是用大恒相机循环抓取图像并显示。星号后的文字是注释。
* 关闭所有图像抓取设备:
close_all_framegrabbers()
* 以默认设置参数打开相机:
open_framegrabber
('DahengCAM', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'default', 'default', 'default', -1, -1, AcqHandle)
* 关闭窗体:
dev_close_window ()
* 新建一个窗体:
dev_open_window (0, 0,427, 341, 'black', WindowID)
*循环体开始:
while(1)
* 由相机抓取一幅图像
grab_image (Image, AcqHandle)
* 获取图像尺寸
get_image_size(Image,Width, Height)
* 调整图像大小以适应窗体
dev_set_part(0,0, Height-1,Width-1)
* 在窗体中显示图像
dev_display(Image)
* 循环体结束
Endwhile
* 关闭指定相机:
close_framegrabber (AcqHandle)
图9 HDevelop界面、HALCON程序和图像显示窗体
3. 导出C#代码
在HDevelop界面中点击“文件”->“导出”。 参数配置最好如图10所示。
图10 “导出”界面
导出的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