0

これが誰の時間の無駄でもないことを本当に願っていますが、小さな問題に遭遇しました。以下を使用して変換行列を作成できます。

M = 
s*cos(theta)        -s*sin(theta)       t_x
s*sin(theta)        s*cos(theta)        t_y
0                   0                   1

これは、theta、s (スケール)、および tx/ty に正しい値を指定し、この行列を cv::warpPerspective の引数の 1 つとして使用すると機能します。問題は、このマトリックスが(0,0)ピクセルを中心に回転するのに対し、中央のピクセル(cols/2、rows/2)を中心に回転させたいことです。中心点の回転をこのマトリックスにどのように組み込むことができますか?

4

1 に答える 1

1

2 つの可能性。1 つ目は、関数 getRotationMatrix2D を使用することです。この関数は、回転の中心を引数として取り、2x3 行列を返します。3 行目を追加して完了です。

2 番目の可能性は、回転の前後に画像を変換する追加の行列を作成することです。

T = 
1 0 -cols/2
0 1 -rows/2
0 0 1

回転行列 M をこれで乗算して、合計変換 -TMT を取得し (たとえば関数 gemm を使用)、これを warpPerspective で適用します。

于 2013-02-05T08:54:33.877 に答える