无需用户交互的Android人脸检测
我想检测前摄像头框架中的人脸数量。我可以使用以下方法在获得图像后检测人脸:。无需用户交互的Android人脸检测,android,camera,face-detection,Android,Camera,Face Detection,我想检测前摄像头框架中的人脸数量。我可以使用以下方法在获得图像后检测人脸:。 但我不知道如何在没有用户交互的情况下,每30秒使用前置摄像头拍摄一次图像。有人能帮我吗?您应该使用,每30秒安排一次RTC_唤醒报警,将pendingent设置为报警以启动一个服务内的摄像头以拍摄图像 您可能应该看看这篇文章:。以下代码将在每5秒后从您的相机捕获照片 if (TIMER_STARTED) { multishotTimer.cancel(); multishotTimer.purge();
但我不知道如何在没有用户交互的情况下,每30秒使用前置摄像头拍摄一次图像。有人能帮我吗?您应该使用,每30秒安排一次
RTC_唤醒
报警,将pendingent
设置为报警
以启动一个服务
内的摄像头
以拍摄图像
您可能应该看看这篇文章:。以下代码将在每5秒后从您的相机捕获照片
if (TIMER_STARTED) {
multishotTimer.cancel();
multishotTimer.purge();
TIMER_STARTED = false;
} else {
multishotTimer = new Timer();
multishotTimer.schedule(new TimerTask() {
@Override
public void run() {
TIMER_STARTED = true;
Camera camera = surfaceView.getCamera();
camera.takePicture(null, null,
new HandlePictureStorage());
}
}, 1000, 5000L);
}
这里,TIMER\u start是布尔值,表示计时器是否正在运行
以下是HandlePictureStorage的代码
private class HandlePictureStorage implements PictureCallback {
@Override
public void onPictureTaken(byte[] picture, final Camera camera) {
//do something when picture is captured...
}
}
您可以手动在其上创建SurfaceView和预览摄影机,如下所示:
//First get a reference to the SurfaceView displaying the camera preview
cameraSurface = (SurfaceView) findViewById(R.id.cameraSurface);
cameraSurfaceHolder = cameraSurface.getHolder();
cameraSurfaceHolder.addCallback(cameraSurfaceHolderCallbacks);
.
.
.
private SurfaceHolder.Callback cameraSurfaceHolderCallbacks = new SurfaceHolder.Callback() {
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if(mCamera == null)return;
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
mCamera = Camera.open();
mCamera.setPreviewDisplay(holder);
} catch (Exception exception) {
if(mCamera == null)return;
mCamera.release();
mCamera = null;
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
Parameters cameraParameters = mCamera.getParameters();
cameraParameters.setPreviewSize(320, 240);
cameraParameters.setPictureSize(320, 240);
int avrgExposure = (cameraParameters.getMinExposureCompensation() + cameraParameters.getMaxExposureCompensation())/2;
cameraParameters.setExposureCompensation(avrgExposure);
mCamera.setParameters(cameraParameters);
mCamera.startPreview();
mCamera.takePicture(null, null, mPictureCallback);
}
};
不要忘记在清单中添加适当的摄像头权限:
<uses-permission android:name="android.permission.CAMERA"/>
你可以到这里来解释与特定功能相关的一切,甚至提供一个功能性的Android源代码,你可以自己下载
问候 您不能使用这样的处理程序:this.refreshTimer=30*1000;this.handlerFaceCapture=新处理程序();this.faceCapture=新的FaceCaptureScheduler();this.handlerFaceCapture.postDelayed(this.handlerFaceCapture,this.refreshTimer);它将每隔30秒执行一次调度程序,该调度程序必须实现Runnable。
mCamera.startFaceDetection();
.
.
.
private FaceDetectionListener faceDetectionListener = new FaceDetectionListener() {
@Override
public void onFaceDetection(Face[] faces, Camera camera) {
//Faces have been detected...
}
};
.
.
.
mCamera.setFaceDetectionListener(faceDetectionListener);