2013-04-27 199 views
3

我想估計一個物體到我的相機的距離。這必須使用Opencv。 我讀過,我必須使用2個攝像頭來代替一個,我發現了一些Matlab的代碼,但我沒有任何經驗。 任何幫助將不勝感激。使用opencv拍攝物體的距離

+0

你知道物體和傳感器的尺寸嗎? – Niko 2013-04-27 09:06:52

+0

我只知道對象的尺寸。傳感器是什麼意思?我有相機 – 2013-04-27 09:25:01

+0

您一定需要知道相機傳感器上像素的大小,例如mm。如果您沒有這些信息但知道相機的焦距,則可以通過校準確定像素大小。 – Niko 2013-04-27 09:37:42

回答

3

是的,這肯定是可以計算的深度使用簡單的針孔相機模型兩個攝像頭:

depth = bcm*fcm/(sensorWidthCm*disparity/(float)horizontalResolution); 

這裏,爲了找到平均視差(關鍵點的水平像素位置的差別),可以使用SurfDescriptorExtractor,並找到匹配對,你可以使用BFMatcher爲鏈接: http://docs.opencv.org/doc/tutorials/features2d/feature_description/feature_description.html

FCM,BCM,sensorWidthCm和horizo​​ntalResolution是所有相機參數:fcm是相機焦距,bcm是相機的分離度,sensorWidthCm是相機傳感器寬度,horizo​​ntalResolution是水平方向的像素數。事實上,你不需要單獨需要所有這些參數。您只需要嘗試一些已知深度即可找到該比例:bcm*fcm/sensorWidthCm在圖像捕獲過程中,水平圖像分辨率已爲人所知。

+0

謝謝,但您的攝像頭傳感器寬度是什麼意思?我怎樣才能得到這樣的參數? – 2013-04-27 09:34:51

+0

這是相機的圖像平面的寬度和投影到平面上的圖像的實際尺寸。無法直接計算此參數,因此您需要使用已知深度的對象進行校準,以使用上述公式提取bcm * fcm/sensorWidthCm比率。 – 2013-04-27 09:38:02

1

您可以使用solvePnP函數,如果您知道對象的精確尺寸,並且它很容易檢測。您還需要運行相機校準以在相機座標中設置單位測量。