android - 如何在 frameLayout android 上围绕脸部绘制边界框

标签 android face-detection bounding android-framelayout

我在 xml 中有一个 frameLayout:

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

此预览用于显示相机 View :

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

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

谢谢。

最佳答案

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

这并不难。首先创建一个具有所需属性的 ShapeDrawable。然后将其设置为标准 View 对象的背景,并添加具有布局参数的 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 View ,因此形状会自动调整大小以适应 View 。我已将其设置为从顶角偏移值 left 和 top。

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

关于android - 如何在 frameLayout android 上围绕脸部绘制边界框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33161683/

相关文章:

c - 在应用 OpenCV 的 Viola-Jones 方法进行人脸检测之前,我应该考虑哪些预处理图像技术?

java - opencv库支持哪些android API?

android - 使用哪种布局以及如何实现以下目标?

android - 如何将音频文件录制为 .m4a 格式?

android - Android 上视频点播应用的计费解决方案

java - 在 Java 中绑定(bind)多个类

android - 高程在 ConstraintLayout 中不起作用

python - OpenCV cv2.VideoCapture() 停止读取 RTSP IP 摄像机

java - 边界椭圆