API распознавания лиц

Используя Java Android, я пытаюсь найти способ распознавания лица с помощью данной фотографии.

Есть идеи? У кого-нибудь есть предложения API?

Вот некоторые ссылки, которые я нашел в библиотеках распознавания лиц.

  • Android FaceDetector.Face для Android
    • Учебное пособие: внедрение функции обнаружения лиц в Android
  • OpenCV Facerecog

Идентификационные ссылки изображений:

  • Moodstocks
  • Ltutech

Вы используете class media.FaceDetector в android для обнаружения лица бесплатно.

Это пример обнаружения лица: https://github.com/betri28/FaceDetectCamera

macgyver предлагает программы обнаружения лиц с помощью простого в использовании API.

В приведенной ниже программе делается ссылка на общеansible образ и будет возвращать массив координат и размеров любых лиц, обнаруженных на изображении.

https://askmacgyver.com/explore/program/face-location/5w8J9u4z

Используйте этот код

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 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

Вы можете попробовать Microsoft Face API. Он может выявлять и идентифицировать людей. Узнайте больше о Face API здесь .

  • как преобразовать цвет rgb в int в java
  • Разделить значение int на отдельные цифры
  • массив байтов к массиву Int
  • Какая версия HTTP-клиента Apache поставляется в Android 1.6?
  • java рисует прямоугольник в одну сторону не одновременно
  • Разделить строку на пробелы в Java, за исключением того, что между кавычками (например, лечить \ "привет мир \" как один токен)
  • Есть ли простой способ вывода двух столбцов на консоль в Java?
  • Android ClassNotFoundException: не нашел class на пути
  • Как я могу сопоставить «корневой» сервлет, чтобы другие скрипты все еще выполнялись?
  • Не удалось выполнить com.google.android.gms play-services-auth: 11.4.0
  • Android Eclipse - Не удалось найти * .apk
  • Interesting Posts

    Ffmpeg: Преобразование MKV в MP4 без потерь

    Какие свойства CSS создают контекст стекирования?

    CharacterEncodingFilter не работает вместе с Spring Security 3.2.0

    Как перезапустить драйвер видеокарты в Windows 7?

    Проблема воссоздания BCD на Windows 7 64bit – запрошенное системное устройство не может быть найдено

    Может ли программное обеспечение вызвать огромный ответ ping?

    Как я могу переместить URL-адрес через 301 переадресацию и сохранить информацию о Facebook в Facebook и Open Graph?

    Получите определенное местоположение GPS как-то на окнах 8

    MPAndroidChart – добавление меток на гистограмму

    Удалить «” из значений csv и изменить имена столбцов при записи в CSV

    Как понять решение динамического программирования в линейном разбиении?

    Как определить BPM песни в php

    java decimal Формат строки

    Как я могу печатать XML-источник, используя VB6 и MSXML?

    Служба не останавливается при вызове метода stopService

    Давайте будем гением компьютера.