我有一個圖像的像素數據陣列。我得到的圖像已經旋轉到270度。所以我試圖再次旋轉90度以獲得正確的圖像。我已經嘗試了轉置算法,將data[x][y]
更改爲data[y][x]
,但我不認爲這是正確的方法。任何人都可以指導我怎樣才能讓它旋轉?將2D像素陣列旋轉90度
5
A
回答
7
這可以在不使用任何額外空間的情況下完成,因此稱爲In-place matrix transposition(不完全相同)。記得在轉位後做一些鏡像。
如果圖像是正方形
如果圖像不是方形
- 對於非方陣,該算法更復雜。 1980年以前的許多算法可以被描述爲「循環週期」算法。也就是說,他們在循環中循環,將數據從一個位置移動到另一個位置。在僞代碼形式:
14
5
如果你想要做的就地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]); } }
相關問題
- 1. 將2D陣列旋轉45度
- 2. 順時針旋轉2d向量90度
- 3. 爲多維NumPy陣列旋轉90度的圖像
- 4. 旋轉像素陣列
- 5. 如何將90度旋轉標籤與像素完美對齊?
- 6. 瞭解如何旋轉矩陣90度
- 7. 旋轉numpy 2D陣列
- 8. 旋轉CALayer 90度?
- 9. 旋轉臺90度
- 10. C - 使用一個陣列將圖像旋轉90度(右和左) - 位圖
- 11. 將矩陣內的矩陣旋轉90度
- 12. 2D像素陣列的旋轉和縮放
- 13. 在Chrome中旋轉90度的圖像
- 14. UIImagePNGRepresentation問題? /圖像旋轉90度
- 15. 順時針旋轉90度的圖像
- 16. C++向量的向量。陣列旋轉90度
- 17. 使用GDI將文本旋轉90度
- 18. 如何將輸出旋轉90度?
- 19. 圓球90度旋轉
- 20. 旋轉NSImageView的CALayer 90度
- 21. C#旋轉位圖90度
- 22. 如何旋轉TeeChart 90度
- 23. 旋轉JLabel 90度爪哇
- 24. 旋轉GoJs形狀90度
- 25. 矩形旋轉90度libgdx
- 26. 如何旋轉StageVideo 90度
- 27. 圖片90度旋轉AVCam
- 28. 旋轉(90度)的ViewGroup根
- 29. 子報表旋轉90度
- 30. 將NxN矩陣旋轉90度後的邏輯錯誤
這是唯一的辦法。您可以並行化流程以使其更快。 –