From 45587f23db3554fcc88867201df1bc3b1aa9b975 Mon Sep 17 00:00:00 2001 From: sepperliu <165877317+sepperliu@users.noreply.github.com> Date: Wed, 3 Apr 2024 14:54:06 +0800 Subject: [PATCH] Update highgui+HighGui.java toBufferedImage Modifying the original array copying method here can double the speed. --- modules/highgui/misc/java/src/java/highgui+HighGui.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/modules/highgui/misc/java/src/java/highgui+HighGui.java b/modules/highgui/misc/java/src/java/highgui+HighGui.java index 87a0ec127a..7a25095166 100644 --- a/modules/highgui/misc/java/src/java/highgui+HighGui.java +++ b/modules/highgui/misc/java/src/java/highgui+HighGui.java @@ -62,14 +62,9 @@ public final class HighGui { if (m.channels() > 1) { type = BufferedImage.TYPE_3BYTE_BGR; } - - int bufferSize = m.channels() * m.cols() * m.rows(); - byte[] b = new byte[bufferSize]; - m.get(0, 0, b); // get all the pixels BufferedImage image = new BufferedImage(m.cols(), m.rows(), type); - final byte[] targetPixels = ((DataBufferByte) image.getRaster().getDataBuffer()).getData(); - System.arraycopy(b, 0, targetPixels, 0, b.length); + m.get(0, 0, targetPixels); return image; }