2015-07-01 38 views
6

Desidero conoscere l'angolo di campo dalla fotocamera, come nella domanda this ma utilizzando android.hardware.camera2. Come posso riprodurre il prossimo codice usando la nuova libreria camera2.Ottieni l'angolo di visualizzazione del dispositivo della fotocamera Android

Camera.Parameters p = camera.getParameters(); 
double thetaV = Math.toRadians(p.getVerticalViewAngle()); 
double thetaH = Math.toRadians(p.getHorizontalViewAngle()); 

C'è un modo per fare la stessa cosa?

risposta

4

Si potrebbe fare matematicamente.

Diagram

si dispone di:

  • L, la larghezza di un oggetto
  • d, la distanza dell'oggetto

si vuole calcolare l'angolo a (alfa), il campo visivo.

Facendo qualche trig:

tan(a/2) = (L/2)/d 
tan(a/2) = L/2d 
a/2 = atan(L/2d) 
a = 2*atan(L/2d) 

Si può fare per calcolare il campo di vista orizzontale. In bocca al lupo!

+0

Sapevo che la soluzione, ma non è quello che voglio perché gli utenti avrebbe bisogno di fare la calibrazione e ci sono già molti passi prima di raggiungere quel punto e Non voglio sopraffare gli utenti per fare un altro passo per essere in grado di conoscere la d e la L –

+0

Oh sì ... Mi spiace di non sapere una soluzione migliore: P –

5

Per quanto riguarda la mia ricerca, la risposta è no. Con l'API camera2 non c'è una chiamata che può darti l'angolo di visione verticale e orizzontale.

Tuttavia, non è necessario utilizzare l'API camera2 per ottenere tali valori. Puoi semplicemente utilizzare l'API camera originale per ottenere l'angolo di visualizzazione verticale e orizzontale, quindi utilizzare l'API camera2 per il resto dell'app.

Per quanto ne so, il vero firmware di acquisizione dell'immagine non è cambiato tra la telecamera e le API camera2.

2

cerco il google una persona spettacolo possibilità che egli calcolare FOV da Camera2 api

https://photo.stackexchange.com/questions/54054/calculating-the-field-of-view-for-a-nexus-5

e ha trovato l'equazione

http://www.bobatkins.com/photography/technical/field_of_view.html

FOV (rettilinea) = 2 * arctan (dimensione del frame/(lunghezza focale * 2)

quindi, dobbiamo sapere dimensione del frame e lunghezza focale

la dimensione del frame è formato di macchina fotografica si possono trovare il codice sul link qui sotto

https://stackoverflow.com/a/30403558

anche, la lunghezza focale è possibile trovare di seguito collegamento

Manual focus in camera2, android

e unisco il codice come questo

Una funzione calculateFOV() calcolare l'angolo di FOV

https://github.com/pchan1401-ICIL/Camera2FOV

+0

Molto bella la scrittura! Attualmente sono spazzato via che l'API Camera 2 rende più difficile lo sviluppatore. Ho pensato che i successivi set di API avrebbero lo scopo di aumentare la funzionalità. –