我目前正在研究一款實驗性相機應用程序。我正在考慮實施人臉檢測,目前我正在權衡我的選擇。Android中的人臉檢測?
我已經考慮過可用於Android的OpenCV端口並使用它們的人臉檢測功能,但是從我之前實現過的演示中,相機似乎滯後了很多。
考慮到HTC Desire上的相機具有人臉檢測支持,我知道必須有可能獲得至少一個半正派的人臉檢測系統。我只是想知道是否有人對我如何獲得最佳結果有意見......使用可用的庫?自己實現一個特定的算法?
我目前正在研究一款實驗性相機應用程序。我正在考慮實施人臉檢測,目前我正在權衡我的選擇。Android中的人臉檢測?
我已經考慮過可用於Android的OpenCV端口並使用它們的人臉檢測功能,但是從我之前實現過的演示中,相機似乎滯後了很多。
考慮到HTC Desire上的相機具有人臉檢測支持,我知道必須有可能獲得至少一個半正派的人臉檢測系統。我只是想知道是否有人對我如何獲得最佳結果有意見......使用可用的庫?自己實現一個特定的算法?
Android SDK自帶FaceDetector,可用於指定位圖中的find faces。
我自己並沒有使用它,但面部失真應用程序的開發人員表示,與OpenCV相比,它不是很準確。它可能適合您的需求,但它可能是HTC Desire的相機應用程序使用的。
在Android SDK中嘗試FaceDetector。它返回BMP中的臉部位置和角度。但速度不是很快。
下面是使用FaceDetector和OpenGL(繪製矩形)的realtime face detection sample,它適用於Android 2.2。
你最好試試這個在Linux(我試過在Windows上,但沒有成功)。
JavaCV(強烈推薦)
有使用相機實時面部檢測的樣本代碼。請參閱下載頁面上的「javacv-src - *。zip」。
這是使用一個基本的例子FaceDetector類
public myView(Context context) {
super(context);
BitmapFactory.Options BitmapFactoryOptionsbfo = new BitmapFactory.Options();
BitmapFactoryOptionsbfo.inPreferredConfig = Bitmap.Config.RGB_565;
myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.threepoint_shooters_1990, BitmapFactoryOptionsbfo);
imageWidth = myBitmap.getWidth();
imageHeight = myBitmap.getHeight();
myFace = new FaceDetector.Face[numberOfFace];
myFaceDetect = new FaceDetector(imageWidth, imageHeight, numberOfFace);
numberOfFaceDetected = myFaceDetect.findFaces(myBitmap, myFace);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawBitmap(myBitmap, 0, 0, null);
Paint myPaint = new Paint();
myPaint.setColor(Color.GREEN);
myPaint.setStyle(Paint.Style.STROKE);
myPaint.setStrokeWidth(3);
for (int i = 0; i < numberOfFaceDetected; i++) {
Face face = myFace[i];
PointF myMidPoint = new PointF();
face.getMidPoint(myMidPoint);
myEyesDistance = face.eyesDistance();
canvas.drawRect((int) (myMidPoint.x - myEyesDistance * 2),
(int) (myMidPoint.y - myEyesDistance * 2),
(int) (myMidPoint.x + myEyesDistance * 2),
(int) (myMidPoint.y + myEyesDistance * 2), myPaint);
}
}
這裏下載完整的源代碼: https://github.com/Jorgesys/Android_Face_Detection
你也必須運行的能力英特爾性能庫在HTC上?如果是的話,我認爲OpenCV可以與IPP結合,提供非常可觀的性能收益。 – Denis 2010-11-09 02:23:59