攝像機標定--我見過最懶的方法
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