Я получаю несколько ошибок, утверждающих, что «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;
}
Я нашел этот пример кода на easybmp.sourceforge.net:
RGBApixel FontColor;
FontColor.Red = 255; FontColor.Green = 0; FontColor.Blue = 0;
Таким образом, кажется, что члены Red, Green и Blue используют заглавные буквы, тогда как в вашем коде вы пытаетесь получить к ним доступ строчными буквами. Итак, ваш компилятор прав, членов, к которым вы пытаетесь получить доступ, не существует.
Просто измените строки, которые получают доступ к членам pixel.red
и т. д. pixel.Red
,