这是一件非常简单的事情,但我并没有真正接受过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
来设置Color pixelColor(0, 255, 255, 255);
,那么它将给出正确的值255.似乎myBitmap.GetPixel(x, y, &pixelColor);
没有正确返回pixelColor
。请让我知道上面代码的错误。
非常感谢您的帮助。谢谢!
答案 0 :(得分:0)
你的for循环应该从0开始......就像这样:
for (int y = 0; y < myBitmap.GetHeight(); y++){
for (int x = 0; x < mybitmap.GetWidth(); x++){
否则你的代码对我来说没问题......也许你的位图有问题?尝试了另一个?也许是一个jpeg?