Search in sources :

Example 1 with QrCodeGeneratorImage

use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.

the class CreateQrCodeGui method renderPreview.

private void renderPreview() {
    QrCodeEncoder encoder = new QrCodeEncoder();
    if (controls.error != null) {
        encoder.setError(controls.error);
    }
    if (controls.mask != null) {
        encoder.setMask(controls.mask);
    }
    if (controls.version > 0) {
        encoder.setVersion(controls.version);
    }
    if (controls.mode != null) {
        switch(controls.mode) {
            case NUMERIC:
                encoder.addNumeric(controls.message);
                break;
            case ALPHANUMERIC:
                encoder.addAlphanumeric(controls.message);
                break;
            case BYTE:
                encoder.addBytes(controls.message);
                break;
            case KANJI:
                encoder.addKanji(controls.message);
                break;
            default:
                encoder.addAutomatic(controls.message);
                break;
        }
    } else {
        encoder.addAutomatic(controls.message);
    }
    boolean failed = false;
    QrCodeGeneratorImage generator = new QrCodeGeneratorImage(10);
    try {
        generator.render(encoder.fixate());
    } catch (RuntimeException e) {
        failed = true;
        System.err.println("Render Failed! " + e.getClass().getSimpleName() + " " + e.getMessage());
    // e.printStackTrace();
    }
    if (failed) {
        BufferedImage output = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = output.createGraphics();
        g2.setColor(Color.RED);
        g2.fillRect(0, 0, output.getWidth(), output.getHeight());
        imagePanel.setImageRepaint(output);
    } else {
        GrayU8 gray = generator.getGray();
        BufferedImage output = new BufferedImage(gray.width, gray.height, BufferedImage.TYPE_INT_RGB);
        ConvertBufferedImage.convertTo(gray, output);
        imagePanel.setImageRepaint(output);
    }
}
Also used : QrCodeEncoder(boofcv.alg.fiducial.qrcode.QrCodeEncoder) GrayU8(boofcv.struct.image.GrayU8) QrCodeGeneratorImage(boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage) BufferedImage(java.awt.image.BufferedImage) ConvertBufferedImage(boofcv.io.image.ConvertBufferedImage)

Example 2 with QrCodeGeneratorImage

use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.

the class CreateQrCodeDocumentImage method render.

public void render(java.util.List<QrCode> markers) {
    for (int i = 0; i < markers.size(); i++) {
        QrCodeGeneratorImage generator = new QrCodeGeneratorImage(moduleWidthPixels);
        generator.render(markers.get(i));
        String name;
        String ext = FilenameUtils.getExtension(documentName);
        if (ext.length() == 0) {
            name = documentName + i + ".png";
        } else {
            if (markers.size() > 1) {
                File f = new File(documentName);
                String n = f.getName();
                name = new File(f.getParentFile(), n.substring(0, n.length() - ext.length() - 1) + i + "." + ext).getPath();
            } else {
                name = documentName;
            }
        }
        GrayU8 gray = generator.getGray();
        BufferedImage tmp = new BufferedImage(gray.width, gray.height, BufferedImage.TYPE_INT_RGB);
        ConvertBufferedImage.convertTo(gray, tmp);
        BufferedImage output = new BufferedImage(gray.width + 4 * moduleWidthPixels, gray.height + 4 * moduleWidthPixels, BufferedImage.TYPE_INT_RGB);
        Graphics2D g2 = output.createGraphics();
        g2.setColor(Color.WHITE);
        g2.fillRect(0, 0, output.getWidth(), output.getHeight());
        g2.drawImage(tmp, moduleWidthPixels * 2, moduleWidthPixels * 2, tmp.getWidth(), tmp.getHeight(), null);
        System.out.println("Saving " + name);
        UtilImageIO.saveImage(output, name);
    }
}
Also used : GrayU8(boofcv.struct.image.GrayU8) File(java.io.File) QrCodeGeneratorImage(boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage) BufferedImage(java.awt.image.BufferedImage) ConvertBufferedImage(boofcv.io.image.ConvertBufferedImage)

Example 3 with QrCodeGeneratorImage

use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.

the class GenericQrCodeDetectorChecks method generateMarker.

private GrayF32 generateMarker() {
    QrCodeGeneratorImage generator = new QrCodeGeneratorImage(4);
    // generator.renderData = false;
    generator.render(expected);
    GrayU8 rendered = generator.getGray();
    GrayU8 output = new GrayU8(rendered.width + 50, rendered.height + 50);
    ImageMiscOps.fill(output, 255);
    output.subimage(25, 25, output.width - 25, output.height - 25).setTo(rendered);
    GrayF32 foo = new GrayF32(output.width, output.height);
    ConvertImage.convert(output, foo);
    return foo;
}
Also used : GrayF32(boofcv.struct.image.GrayF32) GrayU8(boofcv.struct.image.GrayU8) QrCodeGeneratorImage(boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage)

Example 4 with QrCodeGeneratorImage

use of boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage in project BoofCV by lessthanoptimal.

the class ExampleRenderQrCode method main.

public static void main(String[] args) {
    // Uses a flow pattern to specify the QR Code. You can control all aspects of the QR
    // like specifying the version, mask, and message types or let it select all of that for you.
    QrCode qr = new QrCodeEncoder().setError(QrCode.ErrorLevel.M).addAutomatic("This is a Test ん鞠").fixate();
    // NOTE: The final function you call must be fixate() that's how it knows its done
    // QrCodeGenerator is the base class with all the logic and the children tell it how to
    // write in a specific format. QrCodeGeneratorImage is included with BoofCV and is used
    // to creates images
    QrCodeGeneratorImage render = new QrCodeGeneratorImage(20);
    render.render(qr);
    // Convert it to a BufferedImage for display purposes
    BufferedImage image = ConvertBufferedImage.convertTo(render.getGray(), null);
    ShowImages.showWindow(image, "Rendered QR Code", true);
// You can also save it to disk by uncommenting the line below
// UtilImageIO.saveImage(image,"qrcode.png");
// WARNING! This rendered image lacks the white border which is required to be a compliant
// QR Code. As of this writing BoofCV's implementation might not be able to handle
// this image unless you add a white border.
}
Also used : QrCode(boofcv.alg.fiducial.qrcode.QrCode) QrCodeEncoder(boofcv.alg.fiducial.qrcode.QrCodeEncoder) QrCodeGeneratorImage(boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage) BufferedImage(java.awt.image.BufferedImage) ConvertBufferedImage(boofcv.io.image.ConvertBufferedImage)

Aggregations

QrCodeGeneratorImage (boofcv.alg.fiducial.qrcode.QrCodeGeneratorImage)4 ConvertBufferedImage (boofcv.io.image.ConvertBufferedImage)3 GrayU8 (boofcv.struct.image.GrayU8)3 BufferedImage (java.awt.image.BufferedImage)3 QrCodeEncoder (boofcv.alg.fiducial.qrcode.QrCodeEncoder)2 QrCode (boofcv.alg.fiducial.qrcode.QrCode)1 GrayF32 (boofcv.struct.image.GrayF32)1 File (java.io.File)1