2012-03-20 4 views
3

API를 사용하여 14 나는 얼굴 탐지를 성공적으로 사용하는 활동을 만들었습니다. (저는이 얼굴 탐지에 관한 새 작품입니다).Face Detection이 작동하려면 SurfaceView가 필요합니까?

그러나 카메라의 미리보기를 표시하고 싶지는 않습니다. 나는 그저 사용자 얼굴이 카메라 앞에 언제 있는지 알고 싶다. SurfaceView Visible/Invisible을 만들기 위해 몇 개의 버튼을 추가했는데, 얼굴 인식이 보이지 않거나 없어 졌을 때 얼굴 인식이 멈추는 것을 발견했습니다.

레이아웃에서 SurfaceView를 요구하지 않고 얼굴 인식을 활성화하는 방법이 있습니까? 여기

내가 그것을 코딩 한 방법입니다

  mCamera.setPreviewDisplay(mSurfaceHolder); 
      mCamera.startPreview(); 

      if(mCamera.getParameters().getMaxNumDetectedFaces() >0) { 
       mCamera.setFaceDetectionListener(new Camera.FaceDetectionListener() { 
        @Override public void onFaceDetection(Face[] faces, Camera camera) { 

         if(faces.length > 0) { 
          System.out.println("Found someone"); 
         } 

        } 
       }); 
       mCamera.startFaceDetection(); 
      } 

은 서피스 뷰 SurfaceView를 숨기려면 나는 검은보기를 추가했습니다. :-)

<View android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#000"/> 

나는 주위를 둘러 보았고 아직 startFaceDetection()을 사용하여 많은 코드를 찾지 못했습니다.

아이디어/도움 주셔서 감사합니다.

+0

이 질문에 대한 답변을 찾으셨습니까? 얼굴 인식 기능을 사용하는 프로젝트를 발견했지만 표면보기없이 얼굴 인식 만 사용하려고 시도했지만 어떻게해야하는지 알지 못했습니다. https://github.com/ProjPossibility/2014-CSUN-Cam4Blind – portfoliobuilder

답변

0

미리보기가 표시되지 않습니다 카메라는 내가 아직 얼굴 인식 (NO 4.0 장치와 아직 지원하지 않습니다 에뮬레이터)로이 테스트를하지 않은

setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

생략합니다. 그러나 그것은 효과가있다.

참조 : 당신은 대신 setPreviewDisplay의 setPreviewTexture (SurfaceTexture 일)을 사용하고 제어 할 수있는 SurfaceTexture를 사용하려고 시도 할 수 https://groups.google.com/forum/?fromgroups#!topic/android-developers/EzBgJRetaCo

.

+0

그 참조는 오히려 오래된 자료이며 오래된 것입니다. ['setType (int)'] (http://developer.android.com/reference/android/view/SurfaceHolder.html#setType%28int%29)이 사용되지 않고 문서 설정에 따라이 플래그는 새로운 장치에는 영향을 미치지 않습니다. * "무시됩니다.이 값은 필요할 때 자동으로 설정됩니다."*'setPreviewTexture (SurfaceTexture)'는 작동하지만 API 11+에서만 사용 가능합니다. 아마도 둘 다의 조합이 트릭을 할 것입니까? :) –

1

대신에 SurfaceTexture 더미를 사용해야합니다.)

mCamera = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT); 
try{ 
    mCamera.setPreviewTexture(mSurfaceTexture); 
} 
catch (IOException t) { 
    //Do Something here 
} 

3을 :

  1. 그냥 다음과 같은

    mSurfaceTexture = new SurfaceTexture(1); 
    
  2. 지금의 정수를 전달하여 SurfaceTexture 객체를 생성 카메라를 열고 할 얼굴 검출을 사용하는 것과 같은 방식으로 다른 모든 작업을 수행 할 수 있습니다.

+0

이것은 나를 위해 작동하지 않았고 잘못된 식별자를'Camera.open'에 전달하는 것처럼 보입니다. (나는'CameraInfo' 상수가 카메라 id라고 생각하지 않습니다.) – Sam

관련 문제