2013-03-29 82 views
1

我有一個計算旋轉和平移矩陣如下代碼:的OpenCV:src.depth()== dst.depth()&& src.size == dst.size例外

matrix Matrix<double> rt = new Matrix<double>(3, 4); 
if (positiveCount[0] > positiveCount[1]) 
{ 
    rt = R[0].ConcateHorizontal(T[0].GetCol(2)); 
} 
else 
{ 
    rt = R[1].ConcateVertical(T[1].GetCol(2)); 
} 

我得到錯誤如圖所示image,enter image description here

我檢查了所有的矩陣和元素,大小都一致。

有沒有人遇到同樣的錯誤?

回答

1

該問題涉及矩陣尺寸適應性問題。

在else部分:

rt = R[1].ConcateVertical(T[1].GetCol(2)); 

是錯誤的,rt是3×4矩陣,R [1]是3×3和T的第二列[1] 3 * 1

所以如果我們想要將T [1] .GetCol(2)水平添加到R [1]中,我們將它粘貼到矩陣R以獲得3 * 4矩陣。當我們將行/列添加到另一個矩陣時,應該有匹配的大小。

所以應改爲:

rt = R[1].ConcateHorizontal(T[1].GetCol(2));