天天看點

錄影機标定--很懶的方法

1.百度上找半天各種标定的方法,然而複制代碼下來各種報錯,或者就是沒講清楚到底怎麼操作。

後來我突然想到opencv自帶的例程說不到也有标定的代碼,很幸運在sample/python/下找到了calibrate.py這個程式。

打開後裡面有如下代碼:

'''

camera calibration for distorted images with chess board samples

reads distorted images, calculates the calibration and write undistorted images

usage:

    calibrate.py [--debug <output path>] [--square_size] [<image mask>]

default values:

    --debug:    ./output/

    --square_size: 2.4

    <image mask> defaults to ../data/left*.jpg

找到了關鍵點:上面我複制的代碼的最後一行,這行說明,标定用的圖檔

儲存在sample/data檔案夾下,并且名字都為leftXX.jpg。進去後可以看到

有14張這樣命名的圖檔。這時很機智的按它圖檔的樣式列印了标定闆,并

拍下了14張圖檔,以同樣方式命名,接下來狸貓換太子,把自己攝像頭拍

的照片放到data檔案夾下,把它的替換掉。第二步,把square_size後面的

數字1.0換成标定闆上方塊的實際長寬。這裡機關是cm。

到此,可達鴨眼睛一眨,發現事情并沒完。

重新打開python檔案夾下的calibrate.py檔案,裡面代碼如下:

square_size = float(args.get('--square_size'))

    pattern_size = (9,6)

    pattern_points = np.zeros((np.prod(pattern_size), 3), np.float32)

我複制的代碼第二行pattern_size,這是指你拍的圖檔中的點的個數,如果你不知道

怎麼數,你就看一下它原來的圖檔每一行有幾個點,豎着有幾個點,與這個size對比

一下就知道該數哪些點了。

然後把你标定闆上點的數量填到這個函數裡,至此,完事。

在終端裡python calibrate.py就完事了。

驗證标定成功的幾個方法:

1.檢查output檔案夾下的leftXX_undistorted.png。觀察裡面

的直線是不是非常直,而在原來的圖檔中的直線是不是有點彎。

2.檢視終端的輸出資訊,如果fx 接近于fy,幾乎相等或者就是相等,那基本就是标定正确了。

這個是我在ubuntu下操作的,在win10下我不懂怎麼搞,但我估計大同小異,應該也是可以的。

如果python編譯calibrate.py出現錯誤的話,那肯定是你沒用python編譯過opencv,有些庫沒裝。

本文來源于微信公衆号“ CV技術指南 ” 。更多内容與最新技術動态盡在公衆号釋出。

歡迎掃描下方二維碼關注公衆号“CV技術指南”,主要進行計算機視覺方向的論文解讀,最新技術跟蹤,以及CV技術的總結。

原創文章第一時間在公衆号中更新,部落格隻在有空時間才更新少量公衆号文章

錄影機标定--很懶的方法