Halcon软件安装后,其子目录下有一个include文件,其下的头文件均是用C/C++编写,可以在VS2005或更高版本下进行Halcon/C++编程,在这之前需要对VS进行相关配置,如下图所示:
配置完成后,即可在VS下利用Halcon接口进行编程,下面是一个示例:
#include <HalconCpp.h>
int main()
{
using namespace HalconCpp;
HImage Mandrill("monkey"); // 读取图像,即monkey.png,初始化的时候可以不带扩展名
Hlong width,height;
Mandrill.GetImageSize(&width,&height);
HWindow w(0,0,width,height); // 将窗口大小设置为图片大小
Mandrill.DispImage(w); // 在窗口w显示图像
w.Click(); // 等待鼠标的点击动作
w.ClearWindow();//清楚窗口中的图像
HRegion Bright = Mandrill >= 128; // 选择灰度值大于128的像素
HRegion Conn = Bright.Connection(); // 将所选择的像素连接成区域
HRegion Large = Conn.SelectShape("area","and",500,90000);// 选择至少有500个像素大小的区域
HRegion Eyes = Large.SelectShape("anisometry","and",1,1.7);
Eyes.DispRegion(w); // 显示
w.Click();
}
其中,HImage继承自HObject,注意图像数据(iconic data)都继承自类HObject,下面是类HImage的头文件部分代码:
// Represents an instance of an image object(-array).
class LIntExport HImage : public HObject
{
public:
// Create an uninitialized instance
HImage():HObject() {}
// Copy constructor
HImage(const HImage& source) : HObject(source) {}
// Copy constructor
HImage(const HObject& object);
// Create HImage from object id. For copy=false takes
// over management of input key. Type of key must match!
explicit HImage(Hkey key, bool copy=true);
// Access of object tuple element
const HImage operator [] (Hlong index) const;
// Deep copy of all data represented by this object instance
HImage Clone() const;
...
}
数据类型Hlong的定义如下:
typedef INT4_8 Hlong;
即4或8字节的整型。
HRegion亦是图像数据,所以它也继承自类HObject,下面是类HRegion的部分源码:
// Represents an instance of a region object(-array).
class LIntExport HRegion : public HObject
{
public:
// Create an uninitialized instance
HRegion():HObject() {}
// Copy constructor
HRegion(const HRegion& source) : HObject(source) {}
// Copy constructor
HRegion(const HObject& object);
// Create HRegion from object id. For copy=false takes
// over management of input key. Type of key must match!
explicit HRegion(Hkey key, bool copy=true);
// Access of object tuple element
const HRegion operator [] (Hlong index) const;
// Deep copy of all data represented by this object instance
HRegion Clone() const;
...
}
下面是示例运行结果:
单击后的运行结果: