2015-02-05 229 views
0

我目前正在使用OpenCV的校準工具箱進行實驗,並使用默認棋盤圖案來校準攝像頭。我想使用較大的棋盤塊,這樣我就可以遠離相機而不會影響OpenCV檢測角落的能力。如何在OpenCV中更改默認棋盤格塊大小

據我所知,OpenCV預設了預設的塊大小值。我的問題是:有沒有辦法在代碼中更改此默認塊大小的值?我在哪裏可以改變這個? TIA

回答

0

OpenCV不會對您的模式的物理大小或模式大小做任何假設。

也就是說,您可以使用R行和C列的任何模式。 每塊是1釐米還是1米也沒關係。

您給calibrateCamera函數唯一的是objectPointsimagePoints

這些參數的數組尺寸(尺寸)對應於圖案角的數量。

objectPoints應該包含您的檢查角落的三維座標(以及您的情況下的平面座標,通過設置Z = 0)。這些角落應該縮放到棋盤的物理尺寸。也就是說,如果拐角具有行列索引(3,1)並且每個塊邊爲3釐米,則3D座標將爲(0.09, 0.03, 0.00)

+0

好吧,這是有道理的,但你會介意解釋行'objp = np.zeros((6 * 7,3),np.float32)'和 'objp [:,:2] = np.mgrid [ 0:7,0:6] .t.reshape(-1,2)'from [this](http://docs.opencv.org/trunk/doc/py_tutorials/py_calib3d/py_calibration/py_calibration.html#setup) exmple?它似乎創建了一個包含角點索引而不是座標的數組(如(3,1,0)而不是(0.09,0.03,0)) – Yassie 2015-02-09 08:04:24

+0

它創建了一個6x7的3D點網格,其中每個座標爲(x ,y,0)。 x和y座標是由'meshgrid'函數創建的,在這種情況下會創建一個規則的網格。在解釋器中運行meshgrid命令並查看輸出結果,希望能夠很清楚。 – 2015-02-09 09:04:01