目前,我正在为Android手机开发一款应用程序。我们想要检测人脸的特征。程序应该能够检测眼睛,鼻子,嘴巴和脸部边缘的位置。
准确性应该很好,但不一定要完美。为了加快速度,失去一些精确度是可以的。所有的人脸都将是正面的,我们将在此之前知道特征的大致位置。我们不需要实时侦测。应该从保存的图像中提取特征。检测时间应该只是不影响用户体验的时间。因此,即使是2到3秒也可以。
有了这个假设,找到一个能够让我们实现这一点的库应该不会太难。但我的问题是,最好的方法是什么?你的建议呢?这是我第一次为Android开发,我不想走错方向。这对我们来说是一个好主意,还是我自己实现一些现有的算法更好(更快/更高精度)?
我用谷歌搜索了很多,发现了很多有趣的东西。Android API中还有一个人脸检测功能。但是返回的face类(http://developer.android.com/reference/android/media/FaceDetector.Face.html)只包含眼睛的位置。这对于我们的应用来说是很少的。此外,还有适用于安卓或JavaCV的OpenCV。你认为使用什么是一个好主意?对于哪个库,有好的文档和教程?
发布于 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吧。
当链路中断时,相关代码如下:
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
}
}
}
}
}发布于 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中的所有示例。也许我们可以互相帮助,分享一些信息/结果?请让我知道。
发布于 2016-04-27 13:04:32
我已经找到了这个Microsoft API提供的一个很好的人脸情绪检测解决方案。此接口返回JSON响应和情感图。您可以尝试使用此API以获得更好的效果。
情感接口
Emotion Recognition识别图像中一个或多个人表达的情绪,并返回面部的边界框。检测到的情绪是快乐、悲伤、惊讶、愤怒、恐惧、轻视和厌恶或中立。
-The情绪轻视和厌恶
https://www.microsoft.com/cognitive-services/en-us/emotion-api
https://stackoverflow.com/questions/9783969
复制相似问题