From e36cc36d753cc53da37cfcce532cbf7751a944e0 Mon Sep 17 00:00:00 2001 From: Peter Abeles Date: Sat, 20 May 2023 10:50:17 -0700 Subject: [PATCH] - ImageLinePruneMerge * Fixed NPE introduced in the previous fix that was somehow missed --- change.txt | 7 +++++++ .../feature/detect/line/ImageLinePruneMerge.java | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/change.txt b/change.txt index 24a16922fe..a87aac79bb 100644 --- a/change.txt +++ b/change.txt @@ -1,6 +1,13 @@ Change Log Date Format: year/month/day +--------------------------------------------- +Date : 2023/?? +Version : 0.44 + +- ImageLinePruneMerge + * Fixed NPE introduced in the previous fix that was somehow missed + --------------------------------------------- Date : 2023/May/15 Version : 0.43 diff --git a/main/boofcv-feature/src/main/java/boofcv/alg/feature/detect/line/ImageLinePruneMerge.java b/main/boofcv-feature/src/main/java/boofcv/alg/feature/detect/line/ImageLinePruneMerge.java index eb630e7347..22c7362bb3 100644 --- a/main/boofcv-feature/src/main/java/boofcv/alg/feature/detect/line/ImageLinePruneMerge.java +++ b/main/boofcv-feature/src/main/java/boofcv/alg/feature/detect/line/ImageLinePruneMerge.java @@ -111,17 +111,27 @@ public void pruneSimilar( float toleranceAngle, float toleranceDist, int imgWidt Data d = lines.get(i); LineParametric2D_F32 l = d.line; theta[i] = UtilAngle.atanSafe(l.getSlopeY(), l.getSlopeX()); - segments.get(i).setTo(LineImageOps.convert(l, imgWidth, imgHeight)); + LineSegment2D_F32 converted = LineImageOps.convert(l, imgWidth, imgHeight); + + // mark the segment as bad + if (converted == null) + segments.get(i).a.x = Float.NaN; + else + segments.get(i).setTo(converted); } for (int i = 0; i < segments.size(); i++) { LineSegment2D_F32 a = segments.get(i); - if (a == null) continue; + + // see if it was marked bad previously + if (Float.isNaN(a.a.x)) + continue; for (int j = i + 1; j < segments.size(); j++) { LineSegment2D_F32 b = segments.get(j); - if (b == null) + // see if it was marked bad previously + if (Float.isNaN(b.a.x)) continue; // see if they are nearly parallel