From 0dab5b778ede5cfc0a475675cc5942c7e25d4e70 Mon Sep 17 00:00:00 2001 From: Cruizhi <739194286@qq.com> Date: Fri, 11 Apr 2025 13:30:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8DOcrV4Util.matToImage?= =?UTF-8?q?=E6=96=B9=E6=B3=95=E7=94=B1=E4=BA=8E=E9=80=9A=E9=81=93=E6=95=B0?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../github/javpower/javavision/util/OcrV4Util.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/github/javpower/javavision/util/OcrV4Util.java b/src/main/java/com/github/javpower/javavision/util/OcrV4Util.java index 96d1d14..dfca1f2 100644 --- a/src/main/java/com/github/javpower/javavision/util/OcrV4Util.java +++ b/src/main/java/com/github/javpower/javavision/util/OcrV4Util.java @@ -125,10 +125,18 @@ public class OcrV4Util { // 将 OpenCV 的 Mat 转换为 DJL 的 Image public static Image matToImage(Mat mat) { // 将 Mat 对象转换为 BufferedImage 对象 - int type = BufferedImage.TYPE_BYTE_GRAY; - if (mat.channels() > 1) { + int channels = mat.channels(); + int type; + if (channels == 1) { + type = BufferedImage.TYPE_BYTE_GRAY; + } else if (channels == 3) { type = BufferedImage.TYPE_3BYTE_BGR; + } else if (channels == 4) { + type = BufferedImage.TYPE_4BYTE_ABGR; // 处理四通道(例如BGRA) + } else { + throw new IllegalArgumentException("Unsupported channels: " + channels); } + int bufferSize = mat.channels() * mat.cols() * mat.rows(); byte[] buffer = new byte[bufferSize]; mat.get(0, 0, buffer); // 获取 Mat 数据到缓冲区 -- Gitee