gpt4 book ai didi

android - 如何在 Android 中手动设置相机焦点值

转载 作者:行者123 更新时间:2023-12-05 07:55:13 25 4
gpt4 key购买 nike

我打算创建一个可以通过以下方式拍照的应用程序:

  • 当用户触摸屏幕时,它开始拍摄照片
  • 它会在几微秒内拍摄多张照片,每张照片都有不同的焦点

在伪代码中:

Camera camera = getAndroidCamera();
for(i<10)
{
camera.setFocus(i*0.1);
camera.takePhoto(path, pictureName+i);
}

所以基本上我打算用不同的焦点值拍摄同一物体的照片。

根据 this , 这是不可能的,只有辅助自动对焦可行。

你能证实吗?

如果可以,我应该怎么做?我应该set autofocus to different areas

最佳答案

回答-- Android setFocusArea and Auto Focus

我所要做的就是取消之前称为自动对焦的功能。基本上正确的操作顺序是这样的:

protected void focusOnTouch(MotionEvent event) {
if (camera != null) {

camera.cancelAutoFocus();
Rect focusRect = calculateTapArea(event.getX(), event.getY(), 1f);
Rect meteringRect = calculateTapArea(event.getX(), event.getY(), 1.5f);

Parameters parameters = camera.getParameters();
parameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
parameters.setFocusAreas(Lists.newArrayList(new Camera.Area(focusRect, 1000)));

if (meteringAreaSupported) {
parameters.setMeteringAreas(Lists.newArrayList(new Camera.Area(meteringRect, 1000)));
}

camera.setParameters(parameters);
camera.autoFocus(this);
}}

.....更新

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
...
Parameters p = camera.getParameters();
if (p.getMaxNumMeteringAreas() > 0) {
this.meteringAreaSupported = true;
}
...
}

/**
* Convert touch position x:y to {@link Camera.Area} position -1000:-1000 to 1000:1000.
*/
private Rect calculateTapArea(float x, float y, float coefficient) {
int areaSize = Float.valueOf(focusAreaSize * coefficient).intValue();

int left = clamp((int) x - areaSize / 2, 0, getSurfaceView().getWidth() - areaSize);
int top = clamp((int) y - areaSize / 2, 0, getSurfaceView().getHeight() - areaSize);

RectF rectF = new RectF(left, top, left + areaSize, top + areaSize);
matrix.mapRect(rectF);

return new Rect(Math.round(rectF.left), Math.round(rectF.top), Math.round(rectF.right), Math.round(rectF.bottom));
}

private int clamp(int x, int min, int max) {
if (x > max) {
return max;
}
if (x < min) {
return min;
}
return x;
}

关于android - 如何在 Android 中手动设置相机焦点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com