2014-01-08 34 views
1

這是一件非常簡單的事情,但我沒有真正接受過C++培訓。我只需要獲取圖像的每個像素值。讓我們說它是「C:\ LM3S811 \ red.bmp」,169x104像素。使用Gdiplus獲取圖像的像素值

通過搜索這個主題,我確信來自Microsoft SDK的gdiplus應該能夠做到這一點。下面是我的代碼來獲取每個像素的紅色值:

#include <iostream> 
    #include <windows.h> 
    #include <gdiplus.h> 
    using namespace Gdiplus; 
    using namespace std; 
    #pragma comment (lib, "Gdiplus.lib") 

    int main(){ 

     // set bitmap to "C:\LM3S811\red.bmp" 
     Bitmap myBitmap (L"C:\\LM3S811\\red.bmp"); 

     Color pixelColor; 

     // print red value of each pixel of 169x104 pixel 
     for (int y = 1; y <= 104; y++){ 
      for (int x = 1; x <= 169; x++){ 
       myBitmap.GetPixel(x, y, &pixelColor); 
       cout << (int)pixelColor.GetRed() << ","; 
      } 
     } 

     // end 
     cout << endl; 
     system("PAUSE"); 
     return 0; 
    } 

當我運行的代碼,它總是給所有像素爲零。如果我故意設置​​,也就是Color pixelColor(0, 255, 255, 255);,那麼它會給出正確的值255.似乎myBitmap.GetPixel(x, y, &pixelColor);沒有正確返回​​。請讓我知道上面的代碼的錯誤。

您的幫助真的很感謝。謝謝!

回答

0

你的for循環應該從0開始......這樣的:

for (int y = 0; y < myBitmap.GetHeight(); y++){ 
    for (int x = 0; x < mybitmap.GetWidth(); x++){ 

,否則你的代碼看起來不錯,我...也許有一些錯誤的位圖?試過另一個?也許是一個JPEG?