Spanish Leer caracteristicas de la camara de fotos

Josefc

Member
Buenos dias:
Necesitaria vuestra ayuda, porque estoy realizando una aplicacion con la camara, y debo conocer unos datos de sus caracteristicas. (y por ello necesito vuestra ayuda y vuestros conocimientos)
Son datos para obtener el angulo de vision de la camara (view angle)
SENSOR_INFO_PHYSICAL_SIZE
LENS_INFO_AVAILABLE_FOCAL_LENGTHS

Soy novato en estos temas, por favor si no es mucha molestia, os rogaria que la explicacion fuera asequible a mi falta de conocimientos sobre ello.

Un saludo y gracias de antemano.
 

oparra

Well-Known Member
Licensed User
veo que no te responden:

revisa esto:



API android de Camara


si tienes dudas tratare de contestar o otro miembro del foro lo hará.
 

oparra

Well-Known Member
Licensed User
mira no encuentro lo que hice hace algún tiempo para rescatar las características de la cámaras de los móviles

pero se que debes hacerlo con java object , revisa la clase camex2.bas del ejemplo:


API Android Camera2
1627427851590.png


1627427891769.png
 

Attachments

  • CamEx2.bas
    17.8 KB · Views: 22
Last edited:

oparra

Well-Known Member
Licensed User
en el demo anterior debes activar el log para que muestre la información de la cámara:

cam.PrintKeys = True

B4X:
Private Sub B4XPage_Created (Root1 As B4XView)
    Root = Root1
    Root.LoadLayout("1")
    Root.LoadLayout("StillPicture")
    VideoFileDir = rp.GetSafeDirDefaultExternal("")
    VideoFileName = "1.mp4"
    cam.Initialize(pnlCamera)
    cam.PrintKeys = True '<--- info. de las caracteristicas y preview de la camara
    Log(cam.SupportedHardwareLevel)
    buttons = Array(btnScene, btnAutoExposure, btnEffects, btnFocus, btnMode)
    SetState(False, False, VideoMode)
End Sub


mi cámara me entrega estas caracteristicas de lo que deseas saber:
android.sensor.info.physicalSize: 4.66x3.51
android.lens.info.availableFocalLengths: [3.46]

Ahora bien no se que quieres hacer con estos datos.

Saludos.
 

Josefc

Member
Buenos dias apreciado Oparra:

En primer lugar , darte las gracias por la extensa información que me has ofrecido, y que ya he logrado entender y extraer lo que necesitaba de ella.
He logrado extraer los datos que necesitaba, pero me aparece ciertos problemillas que quizás puedas resolverme (abusando de tu confianza, claro...)

Te explico que es lo que necesito y si me pudieras echar una mano, te estaría extremadamente agradecido.

Necesito saber el ángulo de visión de la cámara (es decir cuantos grados puede ver la cámara, considerando que tiene 360 grados, de panorámica total (el ojo humano puede ver unos 140 grados)

en las versiones anteriores sdk, se podría leer mediante:

Camera.Parameters.getVerticalViewAngle().
Camera.Parameters.gethorizontalViewAngle().

Pero en la actualidad no es posible, ya que estas están obsoletas.
Por ello he encontrado este código, que creo , que es equivalente a lo anterior.

private float getHFOV(CameraCharacteristics info) {
SizeF sensorSize = info.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE);
float[] focalLengths = info.get(CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);
if (focalLengths != null && focalLengths.length > 0) {
return (float) (2.0f * atan(sensorSize.getWidth() / (2.0f * focalLengths[0])));
}
return 1.1f;
}
}

Y esta es mi aventura hasta ahora...
parecía tener claro el asunto , hasta que me ha surgido otro poblemilla.

Respecto al dato de sensor, me da un dato interpretable por mí: 4.72x3.5
pero el dato de .LENS_INFO_AVAILABLE_FOCAL_LENGTHS, me da una cadena como esta:

[F@efeaa24

y no sé cómo interpretarla.
Y ahí estoy en este momento, tratando de encontrar información en internete.
si se te ocurre algo, será bienvenido.
Insisto, gracias por la ayuda ofrecida.
un saludo.
 

oparra

Well-Known Member
Licensed User
esto??

****** Preview Capture Request **********

android.lens.focalLength: 3.46

Dim rec As Rect = cam.getActiveArraySize
Log(rec.Width)
 

Josefc

Member
Si eso, pero como saco el dato de:

****** Preview Capture Request **********

android.lens.focalLength:


estas lineas son las que he intenado, pero dan error.(perdon por mi gran ignorancia)

Public Sub focallente As String
Return IntToConst(GetFromCaptureRequest(PreviewRequest, "LENS_FOCAL_LENGTH"), LENS_FOCAL_LENGTH)
End Sub

pero quiero concretamente este dato.

Un saludo y gracias
 
Top