Skip to content

Commit

Permalink
add drawMarks to android BitMapImageFactory (#3460)
Browse files Browse the repository at this point in the history
* add drawMarks to android BitMapImageFactory

* change signature of drawBoundingBoxes
  • Loading branch information
sindhuvahinis authored Sep 10, 2024
1 parent f91a696 commit bf4ae89
Showing 1 changed file with 35 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import ai.djl.modality.cv.output.DetectedObjects;
import ai.djl.modality.cv.output.Joints;
import ai.djl.modality.cv.output.Mask;
import ai.djl.modality.cv.output.Point;
import ai.djl.modality.cv.output.Rectangle;
import ai.djl.modality.cv.util.NDImageUtils;
import ai.djl.ndarray.NDArray;
Expand Down Expand Up @@ -241,7 +242,7 @@ public List<BoundingBox> findBoundingBoxes() {

/** {@inheritDoc} */
@Override
public void drawBoundingBoxes(DetectedObjects detections) {
public void drawBoundingBoxes(DetectedObjects detections, float opacity) {
Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
// set the paint configure
Expand Down Expand Up @@ -282,6 +283,29 @@ public void drawBoundingBoxes(DetectedObjects detections) {
oldBitmap.recycle();
}

/** {@inheritDoc} */
@Override
public void drawMarks(List<Point> 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) {
Expand Down Expand Up @@ -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) {
android.graphics.Path polygonPath = new android.graphics.Path();
polygonPath.moveTo(polygon[0][0], polygon[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);
}
}
}

0 comments on commit bf4ae89

Please sign in to comment.