2015-04-03 64 views
-1

我有一個圖像 - 2D矩陣150×200像素:函數來創建鏡像C++

PixelGrid[WIDTH][HEIGHT] 

我有設置應會產生繞垂直軸的鏡像的功能。不幸的是它不工作,當我加載修改後的圖像時,它仍然與原始圖像相同。

void MirrorImage (unsigned char PixelGrid[WIDTH][HEIGHT]) 
{ 

    for (int row = 0; row < WIDTH; row++) 
    { 
     for (int col = 0; col < HEIGHT/2; col++) 
     { 
      int swapRow = WIDTH - 1 - row; // Mirror pixel 

      unsigned char temp = PixelGrid[row][col]; 
      PixelGrid[row][col] = PixelGrid[swapRow][col]; 
      PixelGrid[swapRow][col] = temp; 

     } 
    } 
} 

我不明白它有什麼問題,有人知道嗎?

+1

我看不出有什麼明顯的。您通過逐步調試代碼並檢查te值是如何變化的? – 2015-04-03 11:18:49

+0

雖然沒有什麼問題*從技術上講,*您的變量命名將成爲維護噩夢。「WIDTH」是圖像中*列的數量。 – Angew 2015-04-03 11:22:46

+0

@Angew同意我在那裏困惑了一會兒 – Mohammad 2015-04-03 11:23:31

回答

2

當我希望你的意思是做0到WIDTH/2時,你從0到WIDTH的行數?

(和col應該是0身高不爲0身高/ 2

+0

你是真的,它現在完美謝謝! – Skinkaku 2015-04-03 11:28:06

1

嘗試......它應該工作...

void MirrorImage (unsigned char PixelGrid[WIDTH][HEIGHT]) 
{ 

    for (int row = 0; row < WIDTH/2; row++) 
    { 
     for (int col = 0; col < HEIGHT ; col++) 
     { 
      int swapRow = WIDTH - 1 - row; // Mirror pixel 

      unsigned char temp = PixelGrid[row][col]; 
      PixelGrid[row][col] = PixelGrid[swapRow][col]; 
      PixelGrid[swapRow][col] = temp; 

     } 
    } 
} 
+0

這工作完美!謝謝:) – Skinkaku 2015-04-03 11:27:49

+0

歡迎...但你必須調試這個。 :) – Mukit09 2015-04-03 11:33:12