RGBApixel'没有名为...的成员红色蓝色和绿色

时间:2014-10-08 18:16:06

标签: c++ rgb pixels bmp rgba

我收到多个错误,"'  #RGB; RGBApixel'没有名为'red'""'' RGBApixel'没有会员名为'green',"' RGBApixel'没有名为'blue'"的成员。不知道为什么,因为我使用的是EasyBMP库。

在下面的函数中,我在BMP图像中定位一个像素,然后将该像素的rgb值与color1和color2 rgb值进行比较。像素将变为最接近它的颜色:

BMP Preprocessor (BMP pix, RGBApixel color1, RGBApixel color2, int xlow, int xhigh, int ylow, int yhigh){

  for (int i = xlow; i < xhigh; i++){
    for (int j = ylow; j < yhigh; j++){

      RGBApixel pixel = pix.GetPixel(i,j);

      double distance1 = abs(pixel.red - color1.red) + abs(pixel.green - color1.green) + abs(pixel.blue - color1.blue);

      double distance2 = abs(pixel.red - color2.red) + abs(pixel.green - color2.green) + abs(pixel.blue - color2.blue);

      if (distance1 < distance2) { // pixel color closest to color1
        pixel.red = color1.red;
        pixel.green = color1.green;
        pixel.blue = color1.blue;

      }  
      else { // pixel color closest to color2
        pixel.red = color2.red;
        pixel.green = color2.green;
        pixel.blue = color2.blue;
      }
    }
  }
  return pix;
}

1 个答案:

答案 0 :(得分:2)

我在easybmp.sourceforge.net上找到了这个代码示例:

RGBApixel FontColor;
FontColor.Red = 255; FontColor.Green = 0; FontColor.Blue = 0;

所以似乎&#39; Red&#39;&#39; Green&#39;&#39; Blue&#39;成员使用大写字母,而在您的代码中,您尝试使用小写字母访问它们。所以你的编译器是对的,你试图访问的成员不存在。

只需将访问成员的行从pixel.red等更改为pixel.Red即可。