halcon编程
2.1 Halcon的核心,资料结构以及内部管理机制
1、效率:缩短执行时间,复杂计算维持良好效率;
2、开放:开放的架构,能内外进行数据的交换,能整合使用者自定的计算功能以及一些非标准的取像设备;
3、标准化:算子的命名,功能以及使用方式,资料结构遵循严格的规则,每个算子有详细的说明,使使用者有最快的上手。
以上表明两大Halcon有两大要点:算子和资料说明。
2.1.2.2 Regions
region是由游程编码Run-length-code表,示的多个region连接成一个region,connection。
2.1.2.3 XLDs
XLDs是eXtended Line Description的缩写,包含了所有等值线以及多边形的信息,入edges_sub_pix之类的亚像素精度算子产生的像素点属于XLD。
等值线:一连串坐标点的序列,相邻两点间以直线相连,一般像素点之间的距离大约是1Pixel,XLD除了点坐标信息外,还包含了全域以及区域的属性。
2.1.2.4 Control Tuples、
数组,Control_tuple的下标由0开始,icon_tuple的下标由1开始。
2.1.2.5 Handles
每个Handle都有一个唯一的整数数值,由系统底层自行产生。如,图形窗口,socket,取像设备,OCR,OCV,measuring,matching等等,都会以handle来代表要操作的对象。
2.1.3 Parrallel Halcon
Parallel HALCON支持parallel programming(e.g.,multi-threaded programs),具有thread-safe(线程安全)以及reentrant(可重入),并行执行。
2.3 HALCON联合编程
HALCON提供有三种语言界面,C、C++为特定语言使用,COM界面可以在Visual Basic,C#,或是Delphi中使用,halconc.*,halconcpp.*,halconx.*
2.3.1 C
由于C不含析构函数,因此需要用clear_obj来释放定义的图像变量,复制、产生、清除或是处理tuple时,会用到macros功能。以下程序代码例举如何在文件中读取一张图像,并且显示在图像窗口上。
read_image(&Monkey, "monkey"); get_image_pointer1(Monkey,&Pointer,Type,&Width,&Height); open_window(0,0,Width,Height,0,"visible","",&WindowHandle); disp_obj(Monkey,WindowHandle);
2.3.2 C++
以下例子为读取图像显示在图形窗口中,并且进行一些基本的blob分析。
HImageX image = new HImageX(); HRegionX region; image.ReadImage("monkey"); region = image.Threshold(128,255);
2.4 延申HALCON功能
2.4.1 Extension Packages(User-Defined Operators)
HALCON提供有Extension Package界面,用于加入新的算子(C语言撰写)。
2.4.2 Frame Grabber界面
2.5 HALCON的使用极限
图像尺寸:32768*32768
内存中图像的阵列数目:100000
每张图片的通道数:1000
tuple中的数值数目:30000
一条等值线上的取样点书目:30000
一个多边形上的角点数目:10000
图像坐标:-32768 ~ +32768
字符串长度:1024字节
3.1.2 检测电源供电线