gpt4 book ai didi

android - Mobile Vision API - 连接新的检测器对象以继续帧处理

转载 作者:IT老高 更新时间:2023-10-28 23:29:03 26 4
gpt4 key购买 nike

我想在应用程序中使用视觉 API 提供的新人脸检测功能以及额外的帧处理。为此,我需要访问由人脸检测器处理的相机帧,并使用人脸检测数据连接一个处理器。

正如我在示例中看到的,CameraSource 抽象了检测和摄像头访问,我无法访问正在处理的帧。是否有示例说明如何在此 API 中获取相机帧,或者创建并连接接收它的检测器?至少有可能吗?

谢谢,卢西奥

最佳答案

是的,这是可能的。您需要创建自己的 Detector 子类,它包装 FaceDetector 并在检测方法中执行额外的帧处理代码。它看起来像这样:

class MyFaceDetector extends Detector<Face> {
private Detector<Face> mDelegate;

MyFaceDetector(Detector<Face> delegate) {
mDelegate = delegate;
}

public SparseArray<Face> detect(Frame frame) {
// *** add your custom frame processing code here
return mDelegate.detect(frame);
}

public boolean isOperational() {
return mDelegate.isOperational();
}

public boolean setFocus(int id) {
return mDelegate.setFocus(id);
}
}

您将使用您的类包装面部检测器,并将您的类传递给相机源。它看起来像这样:

    FaceDetector faceDetector = new FaceDetector.Builder(context)
.build();
MyFaceDetector myFaceDetector = new MyFaceDetector(faceDetector);

myFaceDetector.setProcessor(/* include your processor here */);

mCameraSource = new CameraSource.Builder(context, myFaceDetector)
.build();

将首先使用原始帧数据调用您的检测器。

请注意,如果设备旋转,图像可能不竖直。您可以通过框架的 metadata.getRotation 方法获取方向。

请注意:一旦检测方法返回,您不应访问帧像素数据。由于相机源回收图像缓冲区,一旦方法返回,帧对象的内容最终将被覆盖。

编辑:(附加说明)您也可以使用 MultiDetector 来避免 MyFaceDetector 的样板代码。像这样:

MultiDetector multiDetector = new MultiDetector.Builder()
.add(new FaceDetector.Builder(context)
.build())
.add(new YourReallyOwnDetector())
.build();

还要注意 FaceTrackerFactoryMultiProcessor 的结合使用那里有描述。

关于android - Mobile Vision API - 连接新的检测器对象以继续帧处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32299947/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com