前置摄像头人脸识别不起作用

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,因此我认为它在前置摄像头上受支持。我可以来回切换相机,并每次调用此代码,它将对后置摄像头起作用,但对前置摄像头不起作用。

我可能还做错了什么吗?


你解决了吗?我也遇到了同样的问题。 - Liron
只是检查一下你是否已经解决了这个问题。我在我的 Motorola XT910 上遇到了相同的行为,我想知道是否需要在不同的设备上尝试或者这是在所有设备上都存在的代码问题。 - Liron
4个回答

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();

0

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

顺便说一句,如果您需要进一步的帮助,我们需要了解更多关于代码、库等方面的信息...


是的,相机正在被读取,它在屏幕上显示预览。我想你可能有些困惑。你说网络摄像头,但这是安卓设备,相机是设备的一部分。该库只是标准的Android SDK。 - Kratz

-3

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


1
-1 这是一个关于 Android 的问题。 - michaelb958--GoFundMonica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接