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,所以我假设前置摄像头支持它。我可以来回更换摄像头,每次都调用这个代码,它适用于后置摄像头,但不适用于前置摄像头。

还有什么我可能做错了吗?

4

4 回答 4

1

是否有可能相机的质量不工作(前一个,对吗?)不够准确,无法进行面部检测?相机的图像可能过于嘈杂,人脸检测器无法正常工作。还有许多其他变量可能会阻碍这一点。

也在搜索前置摄像头,看起来前置摄像头的点可能是镜像的。这在:http: //developer.android.com/reference/android/hardware/Camera.Face.html

我希望这有帮助。

于 2013-08-03T18:13:10.830 回答
0

有没有办法检查相机是否被读取?Java 在注册网络摄像头等方面一直存在一些问题......也许尝试确保您可以使用网络摄像头看到图像。

顺便说一句,如果您需要任何进一步的帮助,我们将需要更多地了解代码。图书馆等……

于 2012-11-22T00:40:17.173 回答
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();
于 2014-05-07T06:39:02.280 回答
-3

您可以使用网络摄像头从网络摄像头捕获图像。它会自动检测网络摄像头,因此无需额外配置网络摄像头。它还一次支持多个网络摄像头。

于 2013-07-26T11:46:57.027 回答