一、環境搭建
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、測試結果如下: