如何在frameLayout android上面对边框绘制边界框

时间:2015-10-16 02:38:55

标签: android face-detection bounding android-framelayout

我在xml中有一个frameLayout:

<FrameLayout
    android:layout_width="150px"
    android:layout_height="200px"
    android:id="@+id/preview">
</FrameLayout>

此预览用于显示摄像机视图:

mPreview = new CameraSurfacePreview(MainActivity.this, cameraObj,...);
preview.addView(mPreview2);
....

成功显示前置摄像头的脸部。我有面部矩形x和y坐标。如何在frameLayout上显示一个边框?

谢谢。

1 个答案:

答案 0 :(得分:3)

好吧,您可以使用ShapeDrawable,并将其布局参数设置为您需要的大小和位置,并将其与CameraSurfacePreview一起添加到FrameLayout。

这并不困难。首先使用所需的属性创建ShapeDrawable。然后将其设置为标准View对象的背景,并使用布局参数添加视图以根据需要调整大小。如果你想要

ShapeDrawable sd = new ShapeDrawable(new RectShape());
sd.getPaint().setColor(0xFFFFFFFF);
sd.getPaint().setStyle(Paint.Style.STROKE);
sd.getPaint().setStrokeWidth(1);
View shapeView = new View(context);
shapeView.setBackground(sd);


FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(100, 100);
params.setMargins(left, top, 0, 0);
frameLayout.addView(shapeView, params);

在这种特殊情况下,我将其设为100x100视图,因此形状将自动调整到视图大小。并且我已将其设置为使其从左上角和左上角偏移。

有很多方法可以做到这一点,但这似乎是最简单的。当然,你也可以用XML完成所有这些工作。关于如何做到这一点有很多教程。