Ich möchte den Abstand zwischen der Kamera und dem object.For dies erkannt berechnen ich viele Methoden ausprobiert, habe ich versucht, den Winkel zwischen dem Objekt und der Kamera zu finden, mit Beschleunigungsmesser und dannwie können wir Abstand zwischen Objekt und Android-Handy-Kamera messen
d = h * verwenden a ist
h tan Höhe von von der Basis im allgemeinen der 1,4
ist und ich versuchte, den Winkel zu berechnen, indem Orientierungsverfahren unter Verwendung erhalten. Bitte lassen Sie mich wissen, wo ich falsch mache. Es war mehr als 2 Tage, die ich mit dieser Anforderung kämpfte. Wir haben uns verschiedene Kameraanwendungen angeschaut, die im Android Store verfügbar sind und versucht haben, die Funktionalität derselben zu verstehen, aber nichts war fruchtbar.
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);
}
Wie würde der Winkel auf den Abstand beziehen? Was, wenn ich auf einem Balkon stehe? Wie können Sie die Entfernung messen, wenn Sie die Abmessungen des aufgenommenen Objekts nicht kennen? Und wie viel Objektiv- und optische Sensordichte verwenden Sie? –
Der Zweck der App ist es, den Abstand zwischen einem Objekt und der Kamera zu finden. Vorausgesetzt beide stehen auf dem gleichen Boden. Wir versuchen nicht, die Größe des Objekts zu messen. –
Außerdem möchten Sie bei http://stackoverflow.com/q/4588485 aussehen –