3x3回転行列Rと3x1変換行列Tが与えられたら、T行列とR行列を画像に乗算する方法が不思議ですか?OpenCVを使用した3Dでの画像の翻訳と回転
はIplImageへのIMGがR*(T*img)
私は何をしたいです640×480
であると言うことができます。
私はcvGemmの使用を考えていましたが、うまくいかなかったのです。
3x3回転行列Rと3x1変換行列Tが与えられたら、T行列とR行列を画像に乗算する方法が不思議ですか?OpenCVを使用した3Dでの画像の翻訳と回転
はIplImageへのIMGがR*(T*img)
私は何をしたいです640×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:I 2Dから3Dへの投影を例に挙げましたが、直接transfo = T * Rを使用することができます。
私はこのリンクhttp://jepsonsblog.blogspot.in/2012/11/rotation-in-3d-using-opencvs.htmlに従ってきましたが、私は何を入力する必要があるのか分かりません。私は数を数えてみましたが成功することはできませんでした。私の意図は、与えられた画像をy軸に沿って回転させることです。 – 2vision2
ここではA1行列が間違っています.3行目にもう1つの行列が必要です。この回答をお聞かせください:https://stackoverflow.com/questions/17087446/how-to-calculate-perspective-transform-for-opencv-from-rotation-angles –
ごめんなさい...あなたの方法はあなたがz = 0から大きなz-translationでカメラ(または画像)を戻す限り、 –
答えがあなたに役立つのですか?私に知らせてくれないと、私は説明するつもりです。 Julien – jmartel