簡體   English   中英

JavaCV-提高網絡攝像頭質量

[英]JavaCV - Improve Webcam Quality

我目前正在嘗試實施網絡攝像頭掃描儀。 我當前的問題是使用Java時無法捕獲高質量的圖像。 當我使用Windows“ Camera” -App時,我使用的相機具有8MP並產生出色的圖像。 可悲的是,我無法用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

BufferedImage在Java中非常消耗內存,因為它以類似於圖像格式的位圖存儲圖像。 使用壓縮的其他圖像格式消耗更少的內存。 但是如何在JavaCV中使用它們?

首先,使用探查器應用程序檢查哪個代碼負責實現中的大量內存消耗。 希望框架以壓縮形式存儲圖像數據; 並且在執行frameConverter.convert時會消耗大量內存。 在這種情況下,搜索將圖像以JPEG(或任何其他壓縮數據)的形式存儲在byte []中的解決方案-為了顯示圖像,您可以直接將圖像繪制到例如Graphics2D元素上,而無需將其轉換為首先是BufferedImage。 因此,請使用ToolkitImage,它可以從InputStream圖像源繪制JPEG圖像。 如果您能夠直接從JavaCV將高分辨率圖像存儲為JPEG,則可以為ByteArrayInputStream。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM