수학적으로, 원래 삼각형의 각 점의 무게 중심 좌표를 계산하고, 새로운 좌표를 사용하여 위치로 다시 변환하여이 작업을 수행 할 수 있습니다
float p_data[3] =
{ p.x,
p.y,
1.0
};
Mat_<float> p(3, 1, p_data);
float m_data[9] =
{ A.x, B.x, C.x,
A.y, B.y, C.y,
1.0, 1.0, 1.0
};
Mat_<float> M(3, 3, m_data);
Mat_<float> bary(3,1);
cv::solve(M, p, bary, DECOMP_LU);
float n_data[6] =
{ D.x, E.x, F.x,
D.y, E.y, F.y
};
Mat_<float> N(2, 3, n_data);
Mat_<float> result(2,1) = N * bary;
point_count
포인트를 동시에 매핑하려면 대신 p
, bary
및 result
을 point_count
으로 설정하십시오 (while 에 대해 ..
Mat_<float> Affine = N * M.inv();
Mat_<float> result = Affine * p;
그래서 무엇을 : 명시 적으로 먼저 아핀 행렬을 계산하는 것이 효율적/더 편리 할 수 있으며,이를는 바로이 적용되는 응용 프로그램에 따라 따라
p_data
의 크기 등)증가 세 번째 꼭지점 ?? 3 개의 꼭지점이 무작위로 옮겨져 있습니다 ... – 2vision2
맞습니다. 나는 가능한 번역을 잊었다. – rds
이제 6 개의 unknow 변수 (M은 4, T는 2)와 6 개의 방정식 (각 변환에 대해 2 * 3 변환)이 있습니다. Eveything good good :) – rds