簡體   English   中英

將 bmp 圖像 c++ 旋轉 90 度

[英]Rotation bmp image c++ by 90 degrees

我想將圖像旋轉 90 度的倍數。 我為此使用了一個簡單的像素交換。

當我寫這樣的代碼時:

for (int y = 0; y < image.Height(); y++) {
  for (int x = 0; x < image.Width(); x++) {
   image[x + y * image.Width()] = origin[ x * origin.Width() + origin.Width() -  y + 1];
    }
 }

圖像被一個奇怪的神器翻轉: 在此處輸入圖像描述

原始圖像如下所示: 在此處輸入圖像描述

請告訴我我做錯了什么?

如果您更改此行:

image[x + y * image.Width()] = origin[ x * origin.Width() + origin.Width() -  y + 1];

成為:

image[x + y * image.Width()] = origin[ x * origin.Width() + origin.Width() -  y - 1];   // minus 1 instead of plus 1

它將解決您的工件問題

這是因為為了鏡像(0.. dimension-1)范圍內的坐標,您需要應用:

<mirrored_coord> = <dimension> - <org_coord> - 1

注意:此解決方案假定 class 持有imageorigin具有operator[]返回對單個像素 object(可能是 3 通道對象)的引用。 還假設您的圖像沒有填充,即元素中的步幅等於寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM