1. 程式人生 > >攝像機標定--我見過最懶的方法

攝像機標定--我見過最懶的方法

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: 1.0
    <image mask> defaults to ../data/left*.jpg
'''

找到了關鍵點:上面我複製的程式碼的最後一行,這行說明,標定用的圖片

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

有14張這樣命名的圖片。這時很機智的按它圖片的樣式列印了標定板,並

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

的照片放到data資料夾下,把它的替換掉。到此,可達鴨眼睛一眨,發現事情並沒完。

重新開啟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就完事了。如果不信,你可以開啟你data資料夾下的照片,

以及python/out資料夾下的對應的照片,可以很明顯的經過了標定處理。

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

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

個人習慣用python編譯opencv