2013-03-29 8 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));