如何在实时图像上绘制地标点



需要帮助! 我有这个代码。如何绘制 68 并在相机预览中看到它们?

public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) {
rgba = inputFrame.rgba();
try {
Bitmap bmp = matToBitmap(rgba);
points = getLandmark(bmp, this, predictorPath); // getting 68 points
drawPoints(bmp, points);
} catch (Exception e) {
Log.i(TAG, "bitmap error! " + e.getMessage());
}
return rgba;
}

编辑:添加了此方法,但没有任何反应

public void drawPoints(Bitmap bitmap, List<Point> points) {
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
float radius = 4f;
// draw points
for(Point point : points) {
canvas.drawCircle(point.x, point.y, radius, paint);
}
}

您可以在 Canvas 类的帮助下在位图上绘制点。举个例子:

public void drawPoints(Bitmap bitmap, List<Point> points) {
// a canvas for drawing on the bitmap
Canvas canvas = new Canvas(bitmap);
// a paint to describe how points are drawn
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setColor(Color.RED);
float radius = 4f;
// draw points
for(Point point : points) {
canvas.drawCircle(point.x, point.y, radius, paint);
}
// the bitmap has now been updated
}

这可以根据您接收积分的方式以及您希望积分的显示方式(大小、颜色、形状等(进行更改。
对于实时绘图,您可能需要缓存 Paint 对象。

尝试使用 Canvas 在位图上绘制一些内容。 在这里,您将找到有关此内容的更多信息。

最新更新