Github搜索QRCodeGennerator,先上软件界面
生成的新码图片,这个码的作用是用aruco来定位,然后用zbar来识别QR码,一起进行识别与3D定位,先上图片,再上代码
代码修改
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 );
}
修改看注释peak.ding change的部分。