画像のピクセル データの配列があります。私が取得している画像は、すでに 270 度回転しています。そのため、正しい画像を得るために、もう一度 90 度回転させようとしています。data[x][y]
に変更して転置アルゴリズムを試しましたdata[y][x]
が、それが正しい方法だとは思いません。回転させるにはどうすればよいですか?
質問する
24145 次
4 に答える
15
O(1) スペースを使用してインプレースで実行する場合は、次のようにします。
data[i][j]
とを交換して行列を転置しdata[j][i]
ます。for (int i = 0; i < n; i += 1) { for (int j = i+1; j < n; j += 1) { swap(data[i][j], data[j][i]); } }
各行または列を逆にして、それぞれ +90 度または -90 度回転します。たとえば、+90 度の回転の場合:
for (int i = 0; i < n; i += 1) { for (int j = 0; j < n/2; j += 1) { swap(data[i][j], data[i][n-1-j]); } }
于 2016-02-01T18:46:40.560 に答える