gpt4 book ai didi

Android FaceDetector.findFaces 100% CPU 时间

转载 作者:行者123 更新时间:2023-11-30 03:36:20 25 4
gpt4 key购买 nike

我得到了这个简单的函数

private PointF getFaceCenter(Bitmap faceBitmap){
PointF faceCenter = new PointF(faceBitmap.getWidth() / 2, faceBitmap.getHeight() / 2);

Face[] faces = new Face[1];
mFaceDetector = new FaceDetector(
faceBitmap.getWidth(), faceBitmap.getHeight(), 1);
int detected = mFaceDetector.findFaces(faceBitmap, faces);

if (detected > 0) {
faces[0].getMidPoint(faceCenter);
}

return faceCenter;
}

我用它来获得面部中心,这样我就可以知道在哪里画画。我注意到我的 UI 线程在重新绘制时一直卡住..

所以我将此计算放在 onMeasure 上,但每次调用 UI 时 onMeasure 仍然变慢..

我开始分析:

DDMS Profiling

我看到 mFaceDetector.findFaces 占用了 100% 的 CPU 时间!!我删除了人脸检测代码,我的应用开始运行得非常快。

我做错了什么吗?

有什么解决方法吗?

最佳答案

您正在主线程上执行此操作。处理 UI 事件的同一线程。这就是 UI 阻塞的原因。尝试使用不同的线程进行计算。 (参见 AsyncTask android 文档)

至于 cpu 使用 - 它必须处理大量数据(特别是如果你有 10MPics 相机:))所以这是正常的。

下一个陷阱是当前实现仅适用于 RGB_565(同样是 android 文档),因此可能值得检查位图配置

编辑:

我刚刚在 Galaxy S3 上检查过这个 - 对于后置摄像头拍摄的照片,分析照片需要大约 16 秒。

关于Android FaceDetector.findFaces 100% CPU 时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16609900/

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