59
A
答えて
41
3
あなたはボックス学習アルゴリズムの全く出ていない組み込みAPIを使用することができます。
@sinceのAPIレベル1 http://developer.android.com/reference/android/media/FaceDetector.html
歓声、
オーレリアン
0
あなたは自由のための顔を検出するには、Androidでクラスmedia.FaceDetectorを使用しています。
これは、顔検出の例である:https://github.com/betri28/FaceDetectCamera
+0
彼は顔認識について尋ねました –
0
macgyver申し出APIを使用するように簡単な経由で検出プログラムに直面しています。
以下のプログラムは、パブリック画像を参照し、画像内で検出された任意の顔の座標と大きさの配列を返します。
https://askmacgyver.com/explore/program/face-location/5w8J9u4z
0
使用このコード
public class MainActivity extends AppCompatActivity {
private FaceOverlayView mFaceOverlayView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mFaceOverlayView = (FaceOverlayView) findViewById(R.id.face_overlay);
InputStream stream = getResources().openRawResource(R.raw.face);
Bitmap bitmap = BitmapFactory.decodeStream(stream);
mFaceOverlayView.setBitmap(bitmap);
} }
Faceoverlay.java
public class FaceOverlayView extends View {
private Bitmap mBitmap;
private SparseArray<Face> mFaces;
public FaceOverlayView(Context context) {
this(context, null);
}
public FaceOverlayView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public FaceOverlayView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public void setBitmap(Bitmap bitmap) {
mBitmap = bitmap;
FaceDetector detector = new FaceDetector.Builder(getContext())
.setTrackingEnabled(true)
.setLandmarkType(FaceDetector.ALL_LANDMARKS)
.setMode(FaceDetector.ACCURATE_MODE)
.build();
if (!detector.isOperational()) {
//Handle contingency
} else {
Frame frame = new Frame.Builder().setBitmap(bitmap).build();
mFaces = detector.detect(frame);
detector.release();
}
logFaceData();
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if ((mBitmap != null) && (mFaces != null)) {
double scale = drawBitmap(canvas);
drawFaceLandmarks(canvas, scale);
}
}
private double drawBitmap(Canvas canvas) {
double viewWidth = canvas.getWidth();
double viewHeight = canvas.getHeight();
double imageWidth = mBitmap.getWidth();
double imageHeight = mBitmap.getHeight();
double scale = Math.min(viewWidth/imageWidth, viewHeight/imageHeight);
Rect destBounds = new Rect(0, 0, (int)(imageWidth * scale), (int)(imageHeight * scale));
canvas.drawBitmap(mBitmap, null, destBounds, null);
return scale;
}
private void drawFaceBox(Canvas canvas, double scale) {
//This should be defined as a member variable rather than
//being created on each onDraw request, but left here for
//emphasis.
Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
float left = 0;
float top = 0;
float right = 0;
float bottom = 0;
for(int i = 0; i < mFaces.size(); i++) {
Face face = mFaces.valueAt(i);
left = (float) (face.getPosition().x * scale);
top = (float) (face.getPosition().y * scale);
right = (float) scale * (face.getPosition().x + face.getWidth());
bottom = (float) scale * (face.getPosition().y + face.getHeight());
canvas.drawRect(left, top, right, bottom, paint);
}
}
private void drawFaceLandmarks(Canvas canvas, double scale) {
Paint paint = new Paint();
paint.setColor(Color.GREEN);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
for(int i = 0; i < mFaces.size(); i++) {
Face face = mFaces.valueAt(i);
for (Landmark landmark : face.getLandmarks()) {
int cx = (int) (landmark.getPosition().x * scale);
int cy = (int) (landmark.getPosition().y * scale);
canvas.drawCircle(cx, cy, 10, paint);
}
}
}
private void logFaceData() {
float smilingProbability;
float leftEyeOpenProbability;
float rightEyeOpenProbability;
float eulerY;
float eulerZ;
for(int i = 0; i < mFaces.size(); i++) {
Face face = mFaces.valueAt(i);
smilingProbability = face.getIsSmilingProbability();
leftEyeOpenProbability = face.getIsLeftEyeOpenProbability();
rightEyeOpenProbability = face.getIsRightEyeOpenProbability();
eulerY = face.getEulerY();
eulerZ = face.getEulerZ();
Log.e("Tuts+ Face Detection", "Smiling: " + smilingProbability);
Log.e("Tuts+ Face Detection", "Left eye open: " + leftEyeOpenProbability);
Log.e("Tuts+ Face Detection", "Right eye open: " + rightEyeOpenProbability);
Log.e("Tuts+ Face Detection", "Euler Y: " + eulerY);
Log.e("Tuts+ Face Detection", "Euler Z: " + eulerZ);
}
} }
リファレンス
https://github.com/tutsplus/Android-PlayServices-FaceDetection/tree/master/app/src/main
関連する問題
- 1. Javaの3D顔認識プログラム
- 2. Kairos API:顔認識アルゴリズム
- 3. アンドロイドの顔認識?
- 4. 顔認識マッチングの顔
- 5. Android 4.0顔認識の意図?
- 6. emgucv顔認識
- 7. 顔認識opencv
- 8. C#の顔認識
- 9. Java /処理における顔認識
- 10. OpenCV in JAVA顔認識精度?
- 11. AS3顔認識ライブラリ
- 12. Sony SmartEyeGlassと顔認識
- 13. C++の顔認識とエイジング顔
- 14. Dlibアンドロイドリアルタイム顔認識問題
- 15. OpenCVの顔認識:[iOSの]
- 16. Matlab/Pythonの顔認識
- 17. 顔認識に顔のキーポイントを適用する方法は?
- 18. android sdkを使用した顔認識opencv
- 19. OpenCVを使用したオンライン顔認識
- 20. tracking.jsを使用した顔認識
- 21. OpenCV顔認識現実人
- 22. iPhone:顔認識機能
- 23. dl4jによる顔認識
- 24. kinect v2.0顔認識(wpf)C#
- 25. ビデオ顔検出および画像顔識別を伴うストリームビデオ顔認識
- 26. iPhone/Android用画像認識ライブラリ/ API
- 27. javaキリル文字認識API
- 28. アンドロイドでOpenCVを使った顔認識?
- 29. iOSの視点での顔検出と顔認識の違い
- 30. フォントの顔が認識されない@
チェックアウトトン彼はCV(コンピュータビジョン)ライブラリを開くAndroidのポート@ http://opencv.willowgarage.com/wiki/Android – evandrix
あなたに近づいた@Roshan Wijesenaが使用されましたか?私はopencvとその作業を使用しましたが、私が得たい出力は、ひげで顔をスキャンし、次の画像をスキャンして認識しなければならない場合と同じです。しかし、私は以前にスキャンしたものと同じ顔を認識しています。 –