2012-05-27 5 views
5

я могу получить фокусное расстояние, используя параметры камеры в Android, как это:Получить фокусное расстояние камеры OpenCV Android

Camera.Parameters parameters = camera.getParameters(); 
Log.d(TAG, "Focal length:"+parameters.getFocalLength()); 

Это дает мне 3,97 (правильно). Так как я использую OpenCV для моего проекта, я хочу использовать переменную, уже представленной, а именно:

Log.d(TAG, "Focal length:"+Highgui.CV_CAP_PROP_ANDROID_FOCAL_LENGTH); 

Но это дает мне результат 8005. Я новичок в OpenCV, так что если кто-нибудь может дать мне намек, я был бы очень признателен.

+1

Я считаю, что это как-то связано с устройствами. и быстрый Google на нем предлагает openCV работает в мировых координатах, поэтому 8005 - это расстояние в пикселях. Чтобы скрывать от одного к другому молодому нужно выяснить коэффициент конверсии, я думаю, что для этого есть функция калибровки. – will

+0

+1 Спасибо! Затем я сначала посмотрю на калибровку камеры. Обновит сообщение позже. – springrolls

+0

@will: Я только что откалибровал камеру, как показано в этой ссылке, http://se.cs.ait.ac.th/cvwiki/opencv:tutorial:camera_calibration, и получил разные значения по сравнению с тем, который использует Highgui. fx = 3.81674438e + 003 и fy = 3.90492334e + 003 (в пиксельных координатах, я предположил). Почему это? Извините меня за мое невежество. – springrolls

ответ

1

Тот, который вы используете от Highgui, является Constant. Это то же самое, что и камера. Я думаю, что вы должны придерживаться параметра камеры Android

+1

А, спасибо! Мой мозг отсутствовал на праздник, мне нужно два дня, чтобы понять ваш ответ. лол. – springrolls