3x3 회전 행렬 R 및 3x1 변환 행렬 T가 주어지면 T 및 R 행렬을 이미지에 곱하는 방법이 궁금합니다.OpenCV를 사용하여 3D로 이미지 번역 및 회전
는 Iplimage의 IMG가 R*(T*img)
내가하고 싶은 640 X 480
라고 할 수 있습니다.
나는 cvGemm을 사용하려고 생각했지만 작동하지 않았다.
3x3 회전 행렬 R 및 3x1 변환 행렬 T가 주어지면 T 및 R 행렬을 이미지에 곱하는 방법이 궁금합니다.OpenCV를 사용하여 3D로 이미지 번역 및 회전
는 Iplimage의 IMG가 R*(T*img)
내가하고 싶은 640 X 480
라고 할 수 있습니다.
나는 cvGemm을 사용하려고 생각했지만 작동하지 않았다.
당신이 검색 기능은 아마 warpPerspective()이다 : 이것은 사용 사례 ... 내가 당신을 도울 수있는 희망
// Projection 2D -> 3D matrix
Mat A1 = (Mat_<double>(4,3) <<
1, 0, -w/2,
0, 1, -h/2,
0, 0, 0,
0, 0, 1);
// Rotation matrices around the X axis
Mat R = (Mat_<double>(4, 4) <<
1, 0, 0, 0,
0, cos(alpha), -sin(alpha), 0,
0, sin(alpha), cos(alpha), 0,
0, 0, 0, 1);
// Translation matrix on the Z axis
Mat T = (Mat_<double>(4, 4) <<
1, 0, 0, 0,
0, 1, 0, 0,
0, 0, 1, dist,
0, 0, 0, 1);
// Camera Intrisecs matrix 3D -> 2D
Mat A2 = (Mat_<double>(3,4) <<
f, 0, w/2, 0,
0, f, h/2, 0,
0, 0, 1, 0);
Mat transfo = A2 * (T * (R * A1));
Mat source;
Mat destination;
warpPerspective(source, destination, transfo, source.size(), INTER_CUBIC | WARP_INVERSE_MAP);
,
는
PS 줄리앙
이다 : 나는 2D에서 3D로 투영 된 예제를 제공했지만 직접 transfo = T * R;나는이 링크를 따라 갔다. http://jepsonsblog.blogspot.in/2012/11/rotation-in-3d-using-opencvs.html하지만 나는 어떤 입력을해야하는지 알지 못한다. 나는 소수의 숫자로 시도했지만 성공할 수 없었다. 제 의도는 y 축을 따라 주어진 이미지를 회전시키는 것입니다. – 2vision2
A1 행렬이 잘못되었습니다. 세 번째 행에 또 다른 1이 있어야합니다. 이 답변은 다음과 같습니다. https://stackoverflow.com/questions/17087446/how-to-calculate-perspective-transform-for-opencv-from-rotation-angles –
어, 죄송합니다 ... 내 방식대로 z + 0에서 큰 z- 변환으로 카메라 (또는 이미지)를 다시 움직이는 한 ... –
답변이 도움이되는지 알려 주시지 않겠습니까? 그렇다면 더 설명하려고 노력하겠습니다. 수락 감사합니다! Julien – jmartel