Github search QRCodeGennerator, first go to
the new code image generated by the software interface , the role of this code is to use aruco to locate, and then use zbar to identify the QR code, together with identification and 3D positioning, first upload the image, then add the code
code modification
void MainWindow::updateQRImage()
{
int sizeText = ui->pTextEditQRText->toPlainText().size();
ui->labelSizeText->setText( QString::number( sizeText ) );
int levelIndex = 1;
int versionIndex = 0;
bool bExtent = true;
int maskIndex = -1;
QString encodeString = ui->pTextEditQRText->toPlainText();
successfulEncoding = qrEncode.EncodeData( levelIndex, versionIndex, bExtent, maskIndex, encodeString.toUtf8().data() );
if ( !successfulEncoding )
{
ui->image_label->clear();
ui->image_label->setText( tr("QR Code...") );
ui->labelSize->clear();
ui->pButtonSave->setEnabled( successfulEncoding );
return;
}
int qrImageSize = qrEncode.m_nSymbleSize;
// Создаем двумерный образ кода
encodeImageSize = qrImageSize + ( QR_MARGIN * 2 + QR_INTERNAL * 2);
QImage encodeImage( encodeImageSize, encodeImageSize, QImage::Format_Mono );
//@peak.ding change value
encodeImage.fill( 0 ); //default is 1
//@peak.ding change black border
for ( int i = 0; i < qrImageSize + QR_INTERNAL * 2; i++ )
for ( int j = 0; j < qrImageSize + QR_INTERNAL * 2; j++ )
//if ( qrEncode.m_byModuleData[i][j] )
encodeImage.setPixel( i + QR_MARGIN, j + QR_MARGIN, 1 );
// Создать двумерный образ кода
for ( int i = 0; i < qrImageSize; i++ )
for ( int j = 0; j < qrImageSize; j++ )
if ( qrEncode.m_byModuleData[i][j] )
encodeImage.setPixel( i + QR_MARGIN + QR_INTERNAL, j + QR_MARGIN + QR_INTERNAL, 0 );
ui->image_label->setPixmap( QPixmap::fromImage( encodeImage ) );
setScale(ui->sBoxScale->value());
ui->pButtonSave->setEnabled( successfulEncoding );
}
See the note peak.ding change for modification.