我目前正在开发一款实验相机应用程序.我正在考虑实施面部检测,目前我正在权衡我的选择.
我已经考虑过可用于Android的OpenCV端口并使用他们的面部检测功能,但是从我以前的实现中看到的演示,相机似乎滞后了很多.
考虑到HTC Desire上的摄像头具有面部检测支持,我知道必须能够至少获得一个半体面的人脸检测系统.我只是想知道是否有人对如何获得最佳结果有意见...使用可用的库?自己实现一个特定的算法?
我正试图获得FaceDetector检测到的Face的Euler角度.
这是我用来输出到Logcat的东西:
Log.v("debug", " X: " + face.pose(Face.EULER_X) + " Y: " + face.pose(Face.EULER_Y) + " Z: " + face.pose(Face.EULER_Z) );
Run Code Online (Sandbox Code Playgroud)
但无论面部处于什么角度,它总是为所有三个返回0.0.有什么想法吗?
所以我使用facedector中内置的orroids来检测和确定位图中面部的位置.现在它工作,并告诉我:信心,眼睛距离和中点,但每当我试图获得姿势时,无论我尝试使用什么图像,它总是返回0.
这是我用来获取姿势的代码:
poseString = "Pose: (" + getFace.pose(FaceDetector.Face.EULER_X) + ","
+ getFace.pose(FaceDetector.Face.EULER_Y) + ","
+ getFace.pose(FaceDetector.Face.EULER_Z) + ")";
Run Code Online (Sandbox Code Playgroud)
这是我使用的代码:
arrayFaces = new FaceDetector(picWidth, picHeight, NUM_FACES);
arrayFaces.findFaces(sourceImage, getAllFaces);
for (int i = 0; i < getAllFaces.length; i++) {
getFace = getAllFaces[i];
try {
PointF eyesMP = new PointF();
getFace.getMidPoint(eyesMP);
poseString = "Pose: ("+ getFace.pose(FaceDetector.Face.EULER_X) + ","
+ getFace.pose(FaceDetector.Face.EULER_Y) + ","
+ getFace.pose(FaceDetector.Face.EULER_Z) + ")";
EULER_X = getFace.EULER_X;
EULER_Y = getFace.EULER_Y;
EULER_Z = getFace.EULER_Z;
eyesDistance[i] = getFace.eyesDistance();
eyesMidPts[i] …Run Code Online (Sandbox Code Playgroud)