android - t5i - puntos de enfoque nikon d3400
Enfoque automático: seleccione el punto de enfoque (3)
La aplicación de cámara que viene con el HTC Desire HD le permite al usuario tocar la pantalla en el punto en el que desea enfocar; Un indicador de delimitación aparece alrededor del área y el enfoque automático hace su magia. Por lo tanto, una imagen capturada puede tener un punto lejano en la parte superior derecha y un punto cercano en la parte inferior izquierda, con el usuario capaz de seleccionar cuál de estos está enfocado antes de tomar la imagen.
Se me ha pedido que cree una aplicación que le permita al usuario seleccionar la región de interés después de tomar una foto, obviamente sería bueno que esta región esté enfocada antes de tomar la foto como se describe anteriormente.
Hasta ahora, mi aplicación tiene el enfoque automático en el centro de la imagen, pero no encuentro ninguna referencia para seleccionar la región en la que centrarse en cualquier documentación. Algunas ideas.
A partir de la versión 14 de la API, parece haber un método para esto:
public void setFocusAreas (List focusAreas)
Documentación para desarrolladores de Android: setFocusAreas
Cyanogenmod acaba de agregar esto a su aplicación de cámara, es posible que desee ver los cambios que hicieron allí. Parche relevante: http://review.cyanogenmod.com/#change,6487
Lo que estás solicitando es el enfoque manual.
Hacer esto con la ayuda de Android SDK solo no es posible a partir de hoy. Deberá establecer la distancia focal en la cámara. Pero si ves el SDK de la cámara para Android, habrás notado que hay una API para obtener el punto focal pero no para configurarlo.
Todas las aplicaciones del mercado que le dicen que está realizando un enfoque manual no son ciertas, puede ejecutar su experimento simple para verificar esto. Mantenga un objeto lejano y cercano en la vista previa de la cámara e intente secuencialmente enfocar el objeto lejano y cercano, cuando el foco está en el objeto lejano, entonces el objeto cercano debería estar borroso y cuando el foco está en el objeto cercano, el objeto lejano debería Se difuminará .. lo que no sucederá con las aplicaciones del mercado. (He probado un par, si encuentras uno que realmente haga esto, házmelo saber :))
Pero si está haciendo una aplicación OEM (donde tiene el BSP compilable con usted para el dispositivo), entonces sí, es posible hacerlo (como lo hace la aplicación que mencionó). Y así es como lo hacen (Nota: estos pasos pueden no ser exhaustivos, pero te darán una idea ...)
- Cuando el usuario toca la superficie de vista previa, se obtienen las coordenadas (el área del cuadro).
- Esto luego se alimenta a un algo de enfoque que básicamente hace
- Toma el área del cuadro y los datos de vista previa
- Intenta encontrar los bordes dentro de los datos de vista previa
- Ajusta la distancia focal para obtener bordes más nítidos (Esto es cuando se puede ver en la vista previa que está ocurriendo algo de zoom)
- Calcula la mejor distancia focal que le da bordes afilados en la caja y regresa
- Ahora, la aplicación dice que está enfocado y voila el enfoque manual que se ha logrado.