1、简介
halcon是一款和图像处理库,里面的算法很多,效率很高。由于项目中要做字符识别(OCR),因为halcon算法丰富,算法效率高,开发起来方便省时。所以选择了halcon库为项目的图像处理基础库。
2、halcon字符识别用到的类。
(1)、HImage类:halcon的图像数据存储类。
(2)、HTextModel类:halcon字符识别算子类。
(3)、HTextResult类:字符识别返回的结果存储类。
(3)、HTuple类:halcon存储基本数据的类。类似C++的int。
(4)、HRegion类:halcon用来表示区域的类,类似QT的Item类。
3、源码演示
//创建字符识别算子对象
HTextModel* MainWindow::createTextModel(QString sFontName)
{
HTextModel* pTextModel = NULL;
//2. 创建字库对象,加载已经训练好的字库数据
QString sPath = "/home/mark/Desktop/" + sFontName;
if (QDir(sPath).exists())
{
//自己训练的字库
pTextModel = new HTextModel("auto", sPath.toUtf8().constData());
}
else
{
//Haicon自己训练的字库
pTextModel = new HTextModel("auto", sFontName.toUtf8().constData());
}
//3. 设置字符与背景对比度默认是15
int iMinContrast = ui->sbMinContrast->value();
HTuple hvContrast(iMinContrast == 0 ? 15 : iMinContrast);
pTextModel->SetTextModelParam(HTuple("min_contrast"), hvContrast);
//4. 设置字符最小宽度
int iCharWidthMin = ui->sbCharWidthMin->value();
HTuple hvCharWidthMin(iCharWidthMin == 0 ? "auto" : HTuple(iCharWidthMin));
pTextModel->SetTextModelParam(HTuple("min_char_width"), hvCharWidthMin);
//5. 设置字符最大宽度
int iCharWidthMax = ui->sbCharWidthMax->value();
HTuple hvCharWidthMax(iCharWidthMax =&