如何在 android 中使用带有 FaceDetector 的相机资源?

Posted

技术标签:

【中文标题】如何在 android 中使用带有 FaceDetector 的相机资源?【英文标题】:How to use camera resource with FaceDetector in android? 【发布时间】:2016-06-28 14:31:15 【问题描述】:

我想在安卓中使用FaceDetector。 我用位图图像尝试了FaceDetector,它工作正常。

(借助:http://code.tutsplus.com/tutorials/an-introduction-to-face-detection-on-android--cms-25212)

现在,我想在相机开启时检测人脸。文档写道:

或者,可以在管道结构中使用检测器,在 与源(例如,CameraSource)和处理器(例如, LargestFaceFocusingProcessor),使您能够公平地构造 具有最少编码的高级检测管道。例如, 下面的代码创建并启动一个持续接收的管道 来自前置摄像头的摄像头源的预览帧,运行 对帧进行检测,管理对最突出的人脸的跟踪, 并随着时间的推移将持续的更新通知发送到 开发者定义的“FaceTracker”实例。

https://developers.google.com/android/reference/com/google/android/gms/vision/face/FaceDetector

它提供的代码:

detector.setProcessor(
   new LargestFaceFocusingProcessor(
     detector,
     new FaceTracker()));

 CameraSource cameraSource = new CameraSource.Builder(context, detector)
   .setFacing(CameraSource.CAMERA_FACING_FRONT)
   .setRequestedPreviewSize(320, 240)
   .build()
   .start();

我想在我的代码中实现这个:

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        FaceDetector detector = new FaceDetector.Builder(this)
                .setProminentFaceOnly(true)
                .build();
        detector.setProcessor(
                new LargestFaceFocusingProcessor(
                        detector,
                        new FaceTracker()));

        try 
            CameraSource cameraSource = new CameraSource.Builder(this, detector)
                    .setFacing(CameraSource.CAMERA_FACING_FRONT)
                    .setRequestedPreviewSize(320, 240)
                    .build()
                    .start();
         catch (IOException e) 
            e.printStackTrace();
        
    

    class FaceTracker extends Tracker
    
        public void onDone ()
        

        


    


但是,无法前进。你能帮我进一步编码吗?

【问题讨论】:

【参考方案1】:

查看面部跟踪器示例代码,它与此类似。它还处理获取相机权限和活动暂停/恢复:

https://github.com/googlesamples/android-vision/blob/master/visionSamples/FaceTracker/app/src/main/java/com/google/android/gms/samples/vision/face/facetracker/FaceTrackerActivity.java

你遇到了什么问题?

请注意,“prominentFaceOnly”选项只会检测在相机预览中显得相对较大的人脸(即,人脸约为预览图像宽度的 35% 或更多)。

【讨论】:

以上是关于如何在 android 中使用带有 FaceDetector 的相机资源?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 google 标记中设置带有边框的图像在 Android 中?

如何在android中制作带有Image和textview的Button? [关闭]

如何使用带有 OpenGL ES 的 android 相机工作?

如何在 C#/Xamarin 中使用带有来自 android 钥匙串的私钥的 X.509 证书?

如何使带有自定义背景图像的按钮在Android中显示点击动画

如何在 Android 中发送带有文件附件的电子邮件