首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android -人脸特征检测

Android -人脸特征检测
EN

Stack Overflow用户
提问于 2012-03-20 17:10:53
回答 5查看 10.9K关注 0票数 14

目前,我正在为Android手机开发一款应用程序。我们想要检测人脸的特征。程序应该能够检测眼睛,鼻子,嘴巴和脸部边缘的位置。

准确性应该很好,但不一定要完美。为了加快速度,失去一些精确度是可以的。所有的人脸都将是正面的,我们将在此之前知道特征的大致位置。我们不需要实时侦测。应该从保存的图像中提取特征。检测时间应该只是不影响用户体验的时间。因此,即使是2到3秒也可以。

有了这个假设,找到一个能够让我们实现这一点的库应该不会太难。但我的问题是,最好的方法是什么?你的建议呢?这是我第一次为Android开发,我不想走错方向。这对我们来说是一个好主意,还是我自己实现一些现有的算法更好(更快/更高精度)?

我用谷歌搜索了很多,发现了很多有趣的东西。Android API中还有一个人脸检测功能。但是返回的face类(http://developer.android.com/reference/android/media/FaceDetector.Face.html)只包含眼睛的位置。这对于我们的应用来说是很少的。此外,还有适用于安卓或JavaCV的OpenCV。你认为使用什么是一个好主意?对于哪个库,有好的文档和教程?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-20 17:21:59

OpenCV有a tutorial for this purpose,不幸的是只有C++,所以你必须把它转换成Android。

如果您正在检测可绘制图像或SD卡图像,您也可以在Android、this is a simple example中尝试使用FaceDetection API。或者是最新的Camera.Face API,它可以处理相机图像。

如果你想从你的相机在动态时间的图像,而不是首先阅读How to take picture from camera.,但我建议你检查官方的OpenCV安卓示例并使用它们。

更新:

Mad Hatter示例使用相机和SurfaceView的方法。它的速度令人振奋。看看Mad Hatter吧。

当链路中断时,相关代码如下:

代码语言:javascript
复制
public class FaceDetectionListener implements Camera.FaceDetectionListener {
    @Override
    public final void onFaceDetection(Face[] faces, Camera camera) {
        if (faces.length > 0) {
            for (Face face : faces) {
                if (face != null) {
                    // do something
                }
            }
        }
    }
}
票数 8
EN

Stack Overflow用户

发布于 2012-03-21 19:58:39

我正在做一个类似的项目。我用FaceDetection应用编程接口做了一些测试,我可以告诉你,如果你想检测眼睛,鼻子,嘴巴和边缘,它不会对你有帮助。此接口仅允许您检测眼睛。如果你想实现人脸识别,这是没有用的,因为在人脸检测部分,你需要比眼睛更多的特征。

对你的第一个回复的评论:你确实需要人脸检测。查找特征是人脸检测的一部分,获取这些特征是人脸识别应用程序的第一步。使用OpenCV,您可以使用类似Haar的特征来获取这些特征(眼睛、鼻子、嘴巴等)。

但是,我发现在单独的.cpp文件中使用openCV函数有点复杂。有一个名为JNIEXPORT的东西,它允许你在.cpp文件中使用OpenCV函数编辑Android图库图像。OpenCV有一个样例Haar式特征检测.cpp文件,可用于人脸检测(以及使用其他算法作为第二步进行识别)。

你是在windows还是linux上进行开发?我使用的是windows,还没能使用你链接的教程来设置OpenCV。但是,我在Eclipse中有一个可以正常工作的windows OpenCV环境,并且可以运行OpenCV 2.3.1中的所有示例。也许我们可以互相帮助,分享一些信息/结果?请让我知道。

票数 4
EN

Stack Overflow用户

发布于 2016-04-27 13:04:32

我已经找到了这个Microsoft API提供的一个很好的人脸情绪检测解决方案。此接口返回JSON响应和情感图。您可以尝试使用此API以获得更好的效果。

情感接口

Emotion Recognition识别图像中一个或多个人表达的情绪,并返回面部的边界框。检测到的情绪是快乐、悲伤、惊讶、愤怒、恐惧、轻视和厌恶或中立。

  • 支持的输入图像格式包括JPEG、PNG、GIF(第一帧)、BMP。图片文件大小不能超过4MB。
  • 如果用户已经调用了Face接口,则可以将人脸矩形作为可选输入提交。否则,Emotion API将首先计算rectangles.
  • The可检测到的人脸大小范围为36x36到4096x4096像素。超出此范围的面不会被检测到。
  • 对于每个图像,检测到的人脸数量最多为64个,并按人脸矩形大小降序排列。如果没有检测到人脸,则由于技术挑战,可能无法检测到returned.
  • Some人脸,例如非常大的脸部角度(头部姿势)、较大的遮挡。正面和接近正面的面具有最佳效果。experimental.

-The情绪轻视和厌恶

https://www.microsoft.com/cognitive-services/en-us/emotion-api

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9783969

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档