Voglio calcolare la distanza tra la fotocamera e l'oggetto riconosciuto.Per questo ho provato un sacco di metodi, ho cercato di trovare l'angolo tra l'oggetto e la fotocamera utilizzando accelerometro e quindi utilizzarecome possiamo misurare la distanza tra oggetto e telefono cellulare Android
d = h * abbronzarsi un
h è l'altezza della dal dalla base generalmente che è 1,4
e ho cercato di calcolare l'angolo utilizzando il metodo ottiene orientamento. Fammi sapere dove sto sbagliando. Sono stati più di 2 giorni che ho avuto difficoltà con questo requisito. Abbiamo esaminato varie applicazioni della fotocamera che sono disponibili su Android Store e abbiamo cercato di capire la funzionalità della stessa, ma nulla è stato fruttuoso.
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
accSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
magnetSensor = mSensorManager
.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER)
gravity = event.values;
if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD)
geoMagnetic = event.values;
if (gravity != null && geoMagnetic != null) {
float R[] = new float[9];
float I[] = new float[9];
boolean success = SensorManager.getRotationMatrix(R, I, gravity,
geoMagnetic);
if (success) {
/* Orientation has azimuth, pitch and roll */
float orientation[] = new float[3];
//SensorManager.remapCoordinateSystem(R, 1, 3, orientation);
SensorManager.getOrientation(R, orientation);
azimut = 57.29578F * orientation[0];
pitch = 57.29578F * orientation[1];
roll = 57.29578F * orientation[2];
}
}
}
captureButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// get an image from the camera
double d = (Math.tan(Math.toRadians(Math.abs(pitch))) * sensorHeight);
Toast.makeText(
getApplicationContext(),
"Distance = "
+ String.valueOf(d)
+ "m Angle = "
+ String.valueOf(Math.toRadians(Math.abs(pitch))),
Toast.LENGTH_LONG).show();
}
});
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, accSensor,
SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, magnetSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
Come sarebbe l'angolo in relazione alla distanza? Cosa succede se mi trovo su un balcone? Inoltre, come si può misurare la distanza se non si conoscono le dimensioni dell'oggetto catturato? Inoltre, quante informazioni sulla densità dell'obiettivo e del sensore ottico utilizzate? –
Lo scopo dell'app è trovare la distanza tra un oggetto e la fotocamera. Supponendo che entrambi stiano sullo stesso terreno. Non stiamo provando a misurare la dimensione dell'oggetto. –
Inoltre, si desidera consultare http://stackoverflow.com/q/4588485 –