Github使用QRCodeGenerator生成QR并改造一种新码

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的部分。

发布了51 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/windxf/article/details/105485166