2014-02-25 63 views
0

我使用opencv自帶的示例代碼來校準我的筆記本電腦網絡攝像頭。相機校準結果:爲什麼它與輸入類似?

我創建了大約82個棋盤圖像並使用代碼來處理它們。

結果如下:

This is a camera calibration sample. 
Usage: calibration configurationFile 
Near the sample file you'll find the configuration file, which has detailed help 
of how to edit it. It may be any OpenCV supported file format XML/YAML. 
Re-projection error reported by calibrateCamera: 0.424482 
Calibration succeeded. avg re projection error = 0.424483 

|看來,平均預測誤差是和以前一樣。爲什麼發生這種情況?

如何創建地圖將未校準圖像轉換爲校準圖像?

+0

「平均投影誤差與以前相同」是什麼意思?你問爲什麼它顯示兩次相同的錯誤? – AldurDisciple

+0

看來校準後的錯誤與以前一樣。爲什麼? – mans

+0

'calibrateCamera報告的重新投影錯誤:0.424482'這條線在校準之前不會給出錯誤,而是在校準函數'calibrateCamera'結束時獲得的錯誤。另一個數字是在校準之後對相同錯誤的第二次估計。 – AldurDisciple

回答

1

校準工具應該已經生成了一個XML/YML文件,其中存儲了相機係數K和失真係數D。您可以使用cv::FileStorage類(documentation link)加載這些係數。 This tutorial解釋瞭如何使用這個類。

一旦你的校準數據(矩陣K和畸變係數D),則可以使用undistort函數(documentation link),以生成其中透鏡畸變得到糾正的理想圖像。

與第二個問題相關的是,控制檯中顯示的兩個數字都是校準後重投影誤差的估計值,校準過程結束時報告一個,校準樣本可執行文件報告第二個數據。

+0

校準後如何獲得K和D?我可以將它們寫出來並稍後重新使用它們以便不破壞圖像? – mans

+0

正如校準可執行文件所報告的那樣,校準應該將K和D記錄在XML/YML文件的某處。除非您的網絡攝像機遇到嚴重的溫度變化,否則這些係數應該保持非常穩定。 – AldurDisciple

+0

是的,他們被保存了,我怎樣才能讀取它們並使用這個函數呢? – mans