From d86c56748d265d8a229ccd2f6fb2cd443d670910 Mon Sep 17 00:00:00 2001 From: Somasundaram Date: Mon, 9 Sep 2024 14:54:17 -0700 Subject: [PATCH] add drawMarks to android BitMapImageFactory --- .../djl/android/core/BitmapImageFactory.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/android/core/src/main/java/ai/djl/android/core/BitmapImageFactory.java b/android/core/src/main/java/ai/djl/android/core/BitmapImageFactory.java index c208b6ae4315..087ee820ce2f 100644 --- a/android/core/src/main/java/ai/djl/android/core/BitmapImageFactory.java +++ b/android/core/src/main/java/ai/djl/android/core/BitmapImageFactory.java @@ -18,6 +18,7 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Path; import ai.djl.modality.cv.Image; import ai.djl.modality.cv.ImageFactory; @@ -282,6 +283,29 @@ public void drawBoundingBoxes(DetectedObjects detections) { oldBitmap.recycle(); } + /** {@inheritDoc} */ + @Override + public void drawMarks(List points, int radius) { + Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); + Canvas canvas = new Canvas(mutableBitmap); + + // set the paint configure + Paint paint = new Paint(); + paint.setStrokeWidth(2); + paint.setStyle(Paint.Style.FILL); + paint.setAntiAlias(true); + + paint.setColor(darker(randomColor())); + for (Point point : points) { + int[][] star = createStar(point, radius); + drawPolygon(canvas, paint, star); + } + + Bitmap oldBitmap = bitmap; + bitmap = mutableBitmap; + oldBitmap.recycle(); + } + /** {@inheritDoc} */ @Override public void drawJoints(Joints joints) { @@ -395,5 +419,15 @@ private void drawMask(Bitmap image, Mask mask) { Canvas canvas = new Canvas(image); canvas.drawBitmap(maskedImage, x, y, null); } + + private void drawPolygon(Canvas canvas, Paint paint, int[][] polygon) { + Path polygonPath = new Path(); + polygonPath.moveTo(polygon[0][0], polygonPath[1][0]); + for (int i = 1; i < polygon[0].length; i++) { + polygonPath.lineTo(polygon[0][i], polygon[1][i]); + } + polygonPath.close(); + canvas.drawPath(polygonPath, paint); + } } }