2012-03-20 61 views
3

使用API​​ 14我創建了一個Activity,它成功地使用了人臉檢測(我在這個人臉檢測方面有點新鮮)。人臉檢測是否需要SurfaceView才能正常工作?

但我不想顯示相機的預覽,我只想知道用戶的臉部位於相機的前方。我添加了幾個按鈕來使SurfaceView可見/不可見,並且我發現當它是INVISIBLE或GONE時,面部檢測停止工作。

有沒有辦法啓用面部檢測而不需要佈局中的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 2015-04-29 18:31:12

回答

0

預覽沒有得到顯示的相機,如果你省略

setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

我還沒有與人臉檢測(無4.0設備和仿真器還不支持它)測試此。但它應該工作。

參考:https://groups.google.com/forum/?fromgroups#!topic/android-developers/EzBgJRetaCo

你也可以嘗試使用setPreviewTexture(表面紋理ST),而不是setPreviewDisplay並使用表面紋理,你可以控制的。

+0

該參考文獻相當老舊,而且過時。同時已棄用['setType(int)'](http://developer.android.com/reference/android/view/SurfaceHolder.html#setType%28int%29),並根據文檔設置該標誌將對新設備沒有影響:*「這被忽略,這個值在需要的時候自動設置。」*'setPreviewTexture(SurfaceTexture)'可以工作,但僅在API 11+中可用。也許兩者的結合將會訣竅? :) – 2012-08-16 02:16:08

1

您應該使用虛擬SurfaceTexture爲您的目的。

  1. 通過傳遞任何整數只要創建一個表面紋理對象,如

    mSurfaceTexture = new SurfaceTexture(1); 
    
  2. 現在,打開你的攝像頭,並做到以下幾點:

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

3)你可以以同樣的方式完成其他任何操作,即使用人臉檢測。

+0

這對我不起作用,它看起來像你錯誤的標識符傳入'Camera.open'。 (我不認爲'CameraInfo'常量是相機ID。) – Sam 2014-11-15 13:43:43

相關問題