这是一件很简单的事情,但我并没有真正接受过 C++ 培训。我只需要获取图像的每个像素值。假设它是“C:\LM3S811\red.bmp”,169x104 像素。
通过围绕该主题进行谷歌搜索,我确信来自 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;
}
当我运行代码时,它总是为所有像素给出零。如果我故意pixelColor
用 ieColor pixelColor(0, 255, 255, 255);
来设置,那么它会给出正确的值 255。似乎myBitmap.GetPixel(x, y, &pixelColor);
没有pixelColor
正确返回。请让我知道上面代码的错误。
非常感谢您的帮助。谢谢!