2012-11-15 32 views
10

所以基本上,我有這樣的代碼,人臉檢測不工作的前置鏡頭

 if(mCamera.getParameters().getMaxNumDetectedFaces()==0) 
     { 
      System.out.println("Face detection not avaliable"); 
     } 
     else 
     { 
      System.out.println("Max faces: " + Integer.toString(mCamera.getParameters().getMaxNumDetectedFaces())); 
     } 

     mCamera.setFaceDetectionListener(new FaceDetectionListener() { 

      @Override 
      public void onFaceDetection(Face[] faces, Camera camera) { 
       // TODO Auto-generated method stub 
       System.out.println("Face detection callback called." + Integer.toString(faces.length)); 


      } 


     }); 

調用mCamera.startFaceDetection();後,回調被調用,一切工作正常。但是,如果我更換相機,相同的代碼將導致回調從不被調用。 getMaxNumDetectedFaces,兩個相機返回35,所以我認爲它支持在前置攝像頭。我可以來回更換相機,每次都調用此代碼,它可以用於後置相機,但不適用於前置相機。

還有什麼我可能做錯了嗎?

+0

你知道嗎?我看到同樣的事情。 – Liron

+0

只是檢查你是否知道這一點。我在我的摩托羅拉XT910上有同樣的行爲,我想知道是否需要在不同的設備上嘗試它,或者如果這是我的代碼在所有設備上的問題。 – Liron

回答

0

有沒有辦法檢查相機是否被讀取? Java在註冊網絡攝像頭等方面一直存在一些問題....也許嘗試確保您可以使用網絡攝像頭查看圖像。

順便說一句,如果你想要更多的幫助,我們需要更多地瞭解代碼。圖書館等...

+0

是的,相機正在讀取,它顯示屏幕上的預覽。我想你可能會感到困惑。你說的攝像頭,但這是android,相機是設備的一部分。該庫只是標準的Android SDK。 – Kratz

-2

您可以使用Webcame從網絡攝像頭捕捉圖像。它會自動檢測攝像頭,因此無需爲攝像頭進行額外配置。它同時還支持多個攝像頭。

+1

** - 1 **這是一個** Android **問題。 – michaelb958

1

是否有可能不工作的相機質量(前面的一個,是嗎?)對於面部檢測的工作是否不夠準確?相機的圖像可能太嘈雜,臉部檢測器無法正常工作。還有很多其他變數可能會阻礙這一點。

此外,還要搜索前置攝像頭,它看起來像前置攝像頭的點可能會被鏡像。這在描述:http://developer.android.com/reference/android/hardware/Camera.Face.html

我希望這可以幫助。

0

該代碼將返回您的前置攝像頭的ID,別人可以改變camera.CameraInfo:

private int findFrontFacingCamera() { 
    int cameraId = -1; 
    // Search for the front facing camera 
    int numberOfCameras = Camera.getNumberOfCameras(); 
    for (int i = 0; i < numberOfCameras; i++) { 
     Camera.CameraInfo info = new Camera.CameraInfo(); 
     Camera.getCameraInfo(i, info); 
     if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 

      Log.d("FaceDetector", "Camera found"); 
      cameraId = i; 
      break; 
     } 
    } 
    return cameraId; 
} 

我有這對我的Gallaxy平板電腦工作的代碼,但它難道不叫取照片和因此不會在其他設備中調用人臉檢測,所以在搜索了一段時間後,我發現這個解決方案有效。我在調用takePicture的類中添加了以下代碼:

camera.startPreview();