一、环境搭建
1、下载qt-opensource-windows-x86-5.9.1.exe并安装,下载链接:链接:https://pan.baidu.com/s/1UctWCo08X91m2vIJgZvvXw
提取码:tjh4 。
2、下载halcon-12.0-windows-64.exe并安装,下载链接:链接:https://pan.baidu.com/s/1fqrCDhwq59WQWMW9Os677A
提取码:1joa。(内置破解方法)
3、找到halcon安装目录,我的暗转目录是C:\Program Files\MVTec\HALCON-12.0,分别把lib、include目录拷贝出来,把bin目录中的x64-win64目录下的所有halcon动态库拷贝出来,放到新建的bin目录。新的目录组成如下:
3.1、bin目录的内容如下:
3.2、include目录的内容如下:
3.3、lib目录的内容如下:
4、打开QT新建工程,工程名称为test3,下test3.pro配置halcon环境,如下:
刚刚上面从halcon12.0安装目录下拷贝出来的目录,我放到了D:/w/mLib/Halcon目录,这是我的目录,你们可以放到自己指定的目录下就可以。只要配置的时候写对应的目录就可以。到此windowns+halcon12.0+Qt5.9.1的开发环境就搭建好了。
二、使用halcon实现二维码识别。
1、在test3工程的MainWindow.h文件引入halcon库,如下
2、主要的二维码识别代码如下:
void MainWindow::on_tbCheck_clicked()
{
QTime tm;
tm.restart();
int iSize = m_list.size();
if (iSize > 0)
{
QString sCodeType = ui->cbCodeType->currentText();
m_iLoopId = (m_iLoopId + 1) % iSize; //循环ID
QString sFileName = ui->lePath->text() + "\\" + m_list.at(m_iLoopId);
//创建二维码识别模型
HImage hImage(sFileName.toUtf8().data());
HDataCode2D code2d;
code2d.CreateDataCode2dModel(sCodeType.toUtf8().data(), "default_parameters", "enhanced_recognition");
//识别二维码
Hlong hGenParamValues = 50; //二维码个数
HTuple hResultHandles; //二位类型
HTuple hDecodedDataStrings; //二维码内容
code2d.FindDataCode2d(hImage, "stop_after_result_num", hGenParamValues, &hResultHandles, &hDecodedDataStrings);
QString sText;
int iSize = hDecodedDataStrings.Num();
for (int i = 0; i < iSize; i++)
{
QString s(hDecodedDataStrings[i].S());
sText += (s + "\n\n");
}
ui->teText->setText(sText);
}
QString sTimes = QString::number(tm.elapsed(), 10);
ui->leTimes->setText(sTimes + " ms");
}
3、测试结果如下: