文章目录
  1. 1. 测光与聚焦区域
  2. 2. 人脸识别

测光与聚焦区域

如果设备支持自动对焦,可以使用setFocusMode方法传入一个Camera.Parameters.FOCUS_MODE_*常量来指定对焦模式。根据不同设备的支持,使用getSupportedFocusMode方法找到可用的对焦模式。使用自动对焦可以使用AutoFocusCallback回调。

1
2
3
4
5
6
7
8
9
10
Camera.Parameters parameters = camera.getParameters();
if(parameters.getSupportedFocusModes().contains(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)){
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);

camer.autoFocus(new AutoFocusCallback(){
public void onAutoFocus(boolean success,Camera camera){
//
}
});
}

getMaxNumFocusAreas方法来确定涉笔是否支持定义对焦区域。getMaxNumMeteringAreas来确定摄像头是否支持测光区域。

1
2
3
4
5
6
7
8
9
10
11
if(params.getMaxNumMeteringAreas() > 0) { // 检查是否支持测光区域
List<Camera.Area> meteringAreas = new ArrayList<Camera.Area>();

Rect areaRect1 = new Rect(-100,-100,100,100); // 在图像的中心指定一个区域
meteringAreas.add(new Camera.Area(areaRect1,600)); // 设置宽度待60%
Rect areaRect2 = new Rect(800,-1000,1000,-800); // 在图像的右上角指定一个区域
meteringAreas.add(new Camera.Area(areaRect2,400)); // 设置宽度为40%
params.setMeteringAreas(meteringAreas);
}

mCamera.setParameters(params);

Camera.Area对象包含两个参数:一个Rect对象指定了相机视图中的一个区域,还有一个宽度,告诉相机在测光或聚焦计算中此区域的重要程度。
Camera.Area对象的Rect描述了一个矩形区域在一个2000*2000个单元格组成的区域中的映射位置。坐标-1000,-1000表示左上角,1000,1000表示右下角。不会随变焦大小改变。

人脸识别

调用getMaxNumDetectedFaces()来检测是否支持面部检测特性

1
2
3
4
5
6
7
8
class MyFaceDetectionoListener implements Camera.FaceDetectionListener {
@Override
public void onFaceDetection(Face[] faces,Camera camera) {
if (faces.length > 0) {
Log.d("FaceDetection","face detected:" + faces.length + "face 1 Location x:" + faces[0].rect.centerX() + "Y:" + faces[0].rect.centerY());
}
}
}

文章目录
  1. 1. 测光与聚焦区域
  2. 2. 人脸识别