diff --git a/build.gradle.kts b/build.gradle.kts index 4ca1b5f..85f40f3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { qupathExtension { name = "qupath-extension-djl" - version = "0.4.1" + version = "0.4.2" group = "io.github.qupath" description = "QuPath extension to use Deep Java Library" automaticModule = "qupath.extension.djl" diff --git a/src/main/java/qupath/ext/djl/DjlTools.java b/src/main/java/qupath/ext/djl/DjlTools.java index 9998c5f..f5670b9 100644 --- a/src/main/java/qupath/ext/djl/DjlTools.java +++ b/src/main/java/qupath/ext/djl/DjlTools.java @@ -404,7 +404,9 @@ public static NDArray matToNDArray(NDManager manager, Mat mat, String ndLayout) array = manager.create(buffer, shape, dataType); } else if (("NCHW".equals(ndLayout) || "CHW".equals(ndLayout)) && (nChannels == 3L || nChannels == 4L)) { // Channels-first - an OpenCV blob is defined to have the order NCHW, but an Image can only have 1, 3 or 4 channels - array = manager.create(opencv_dnn.blobFromImage(mat).createBuffer(), shape, dataType); + try (var blob = opencv_dnn.blobFromImage(mat)) { + array = manager.create(blob.createBuffer(), shape, dataType); + } } else { // Really awkward strategy to handle channels in an uncommon place (shouldn't actually occur?) var shapeDims = shape.getShape().clone();