2013-02-05 2 views
11

카메라 이외의 응용 프로그램에서 일부 Android 4 API를 사용하고 싶습니다.카메라 이외의 응용 프로그램에서 Android Camera API를 사용하는 방법은 무엇입니까?

API에는 API 14부터 사용할 수있는 Camera.Face 클래스를 비롯하여 매우 멋진 얼굴 인식 클래스가 포함되어 있습니다. 동일한 얼굴 검색 클래스를 적용하여 기기에 저장된 이미지에 얼굴 인식을 구현하고 싶습니다. 기기 자체에 저장된 사진 (예 : 소셜 태깅, 얼굴 이미지 조작 등)을 처리하는 데이 방법을 사용하고 싶습니다.

이 재사용 작업을 수행하는 방법에 대한 지침이 필요합니다.

답변

3

FaceDetectionListener는 얼굴을 감지하는 데 사용하려는 것이지만 카메라에서만 수신 대기합니다. 이것이 유일한 기능입니다. 사용자 기기의 사진에 실제로 사용하려면 카메라 API의 소스 코드를 다운로드하고 원하는 방법을 필요에 맞게 수정하는 것이 좋습니다.

현재 모든 주식 안드로이드 코드에 대한 소스를 찾을 수 있습니다 https://android.googlesource.com/

행운을 빕니다!

+0

감사를 사용하는 것이 좋습니다 진행하려면이 문서 Face Detection with Android APIs

에 설명되어 완전한 프로젝트 예를 here를 다운로드,하지만 난 할 수 결과 실제로 카메라 API의 소스 코드를 찾을 수 없었습니다 (검색했습니다). 이것에 대한 도움이 감사합니다. –

+0

여기에있는 코드를 살펴 보시기 바랍니다. https://android.googlesource.com/platform/packages/apps/Camera/+/master 여기에 없으면 하드웨어 프레임 워크에있을 가능성이 큽니다. 어떻게 진행되는지 알려주세요. – NathanTempelman

+0

사실 아무 것도 없습니다 : http://code.google.com/a/eclipselabs.org/p/face-recognition-android/source/browse/ 어쨌든 고마워 –

2

당신은 FaceDetector 클래스를 알고 있습니까? 그것은 API v1부터 거기에있어 꽤 잘 작동합니다. 당신은 더 많은 일을해야하는 경우 당신은 항상

당신은 몇 (작은 일자를 확인할 수 있습니다 (쉽게 안드로이드 애플리케이션에 통합 할 수 있도록,뿐만 아니라 몇 가지 자바 바인딩을 함께 제공) OpenCV 같은 일부 전용 프레임 워크를 사용할 수 있습니다 고급

  1. Face Detection on Andriod Part-I
  2. Face Detection on Andriod Part-II
+0

감사합니다! 나는'FaceDetector '클래스에 대해서 알고 있지만 아마도 당신이 알고 있듯이 얼굴, 눈, 중간 눈을 발견 할 것입니다. 코와 입이 아닙니다. OpenCV에 관해서, 그것은 실제로 내가 지금보고있는 것입니다! –

+1

나는 더 강력한 것을 필요로한다. OpenCV가 가장 좋은 선택입니다. 참고 사항 : 다양한 얼굴 특징을 식별하기 위해 일련의 훈련 세트와 함께 동일한 계단식 분류기 (Haar 기반이 가장 정확함)를 사용할 수 있습니다. –

6

경우 :하지만 여전히 유용) 기사 나 동료와 언젠가 전에 만든 당신이 필요로하는 것은 장치에 저장된 이미지의 얼굴을 탐지하는 것입니다. 안드로이드의 소스 코드를 해킹하지 않고서도 확실히 할 수 있습니다!

는 당신에게 그 사진에있는 얼굴의 위치를 ​​제공 (565 형식 포맷 ) 입력으로 Bitmap을 받아 API 1 일부터 패키지 android.media에서 사용할 수있는 FaceDetector API가있다.여기

는 당신이 필요로하는 단계는 다음과 같습니다

1로드 Bitmap565 format로 변환

Bitmap originalBitmap = 
      BitmapFactory.decodeResource(getResources(),R.drawable.facesPicture); 

Bitmap bitmap = originalBitmap .copy(Bitmap.Config.RGB_565, true); 

originalBitmap .recycle(); // allow the GC to collect this object 

2 개최 Face 배열을 정의 (당신이 당신의 당김 자원에서 facesPicture 파일이 가정) 검출 된 얼굴 정보 및 초기화한다. FaceDetector

int MAX_FACES = 20; // assuming that the image will have maximum 20 faces 

FaceDetector.Face[] faces = new FaceDetector.Face[MAX_FACES]; 

FaceDetector faceDetector = 
      new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), MAX_FACES); 

3- 검색 얼굴 및 프로세스

int facesCount = faceDetector.findFaces(bitmap, faces); 

for(int i=0; i<facesCount; i++) { 
    FaceDetector.Face face = faces[i]; 

    float detectionConfidence = face.confidence(); // over 0.3 is OK 

    PointF eyesMidPoint = new PointF(); 

    face.getMidPoint(eyesMidPoint); 

    float eyesDistance = face.eyesDistance(); 

    float rotationX = face.pose(FaceDetector.Face.EULER_X); 

    float rotationY = face.pose(FaceDetector.Face.EULER_Y); 

    float rotationZ = face.pose(FaceDetector.Face.EULER_Z); 

    // Do something with these values 

} 

당신은 당신이 뭔가 더 당신이 OpenCV의에게

+0

감사합니다. 그러나 위의 설명에서 볼 수 있듯이, 나는 FaceDetector가 제공 할 수없는 코와 입을 감지하는 방법을 찾고 있습니다. –

+1

'OpenCV'를 사용하거나 눈의 위치를 ​​알고 있다면 코와 입 감지 알고리즘을 구현할 수 있습니다. OpenCV의 코드를 보면 – iTech

+0

실제로 내가 현재하고있는 아이디어를 얻을 수 있습니다. 감사! –

관련 문제