bytedeco/javacv

grabber.grabImage() ist zu langsam, um mehrere Frames hintereinander zu erhalten

Open

#1.893 geöffnet am 22. Sept. 2022

Auf GitHub ansehen
 (2 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Java (1.583 Forks)batch import
help wantedquestion

Repository-Metriken

Stars
 (6.985 Stars)
PR-Merge-Metriken
 (Keine gemergten PRs in 30 T)

Beschreibung

I want to get multiple frames in a row, but the grabber.grabImage() method is too slow, can it be optimized? Below is my code

int flag = 1;
        List<Map<Integer, Frame>> lists = new ArrayList<>();
        while (flag < 64) {
            Map<Integer,Frame> map = new HashMap<>();
            Frame frame = grabber.grabImage();
            map.put(flag,frame);
            lists.add(map);
            flag++;
        }
        log.info("lists");

        for (Map<Integer, Frame> map : lists) {
            map.forEach((k,v)->{
                DecimalFormat decimalFormat = new DecimalFormat("00000");
                String name = decimalFormat.format(k);
                File imgUrl = new File("C:\\Users\\Administrator\\Desktop\\video\\" + name + ".jpg");

                
                Java2DFrameConverter converter = new Java2DFrameConverter();
                BufferedImage bufferedImage = converter.getBufferedImage(v);
                try {
                    ImageIO.write(bufferedImage, "jpg", imgUrl);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }

Contributor Guide