JavaCV - 改善网络摄像头质量

问题描述 投票:0回答:1

我目前正在尝试实施网络摄像头扫描仪。我目前的问题是我在使用Java时无法捕获高质量的图像。我使用的相机有800万像素,当我使用Windows“相机”-App时产生出色的图像。遗憾的是,我无法用JavaCV复制这种质量。

这是我用于捕获图像的(重要)代码:

FrameGrabber grabber;
private Java2DFrameConverter frameConverter;
public JavaCVCamera(String imagePath, double rotation) {
    this.frameConverter = new Java2DFrameConverter();
    this.imagePath = imagePath;
    this.rotation = rotation;
    this.grabber = new OpenCVFrameGrabber(0);
    this.grabber.setImageWidth(3264);
    this.grabber.setImageHeight(2448);
    try {
        this.grabber.start();
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
public void saveImageToFile(boolean applyUpscaling, boolean applyRotation) {
    File folder = new File(imagePath);
    if (!folder.exists()) {
        folder.mkdirs();
    }

    try {
        BufferedImage img = frameConverter.convert(grabber.grab());

        if (applyUpscaling) {
            img = Thumbnails.of(img).forceSize(3264, 2448).asBufferedImage();
        }

        if (applyRotation) {
            img = rotateImageByDegrees(img, rotation);
        }

        File path = new File(imagePath + "/img_"
                + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy_MM_dd_HH_mm_ss")) + "." + "png");
        ImageIO.write(img, "png", path);
        LOGGER.info("Captured Image: {}", path.toString());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

(注意:我不使用升级来增大图像)

为了您的理解,这是一个例子:

有没有办法捕获与Windows Camera App具有相同分辨率和质量的图像?

亲切的问候,QUE

java webcam javacv
1个回答
0
投票

BufferedImage在Java中非常耗费内存,因为它将图像存储在像图像格式的Bitmap中。使用压缩的其他图像格式消耗更少的内存。但是如何将它们与JavaCV一起使用?

首先,使用分析器应用程序检查哪些代码负责实现的大量内存消耗。希望Frame还以压缩形式存储图像数据;并且在执行frameConverter.convert时,它会消耗大量的内存。在这种情况下,搜索将图像存储为字节[]中的JPEG(或任何其他压缩数据)的解决方案 - 用于显示图像,您可以直接绘制图像,例如到Graphics2D元素没有先将它转换为BufferedImage。因此,使用ToolkitImage,它能够从InputStream图像源绘制JPEG图像。如果您能够直接从JavaCV以JPEG格式存储高分辨率图像,则可以是ByteArrayInputStream。

© www.soinside.com 2019 - 2024. All rights reserved.