2014-10-08 110 views
-1

我收到多個錯誤,指出''RGBApixel'沒有名爲'red'的成員'',''RGBApixel'沒有名爲'green'的成員,並且「'RGBApixel'沒有名爲'blue'的成員不知道爲什麼,因爲我使用EasyBMP庫RGBApixel'沒有成員名爲...紅色藍色和綠色

在下面的函數中,我在BMP圖像中找到一個像素,然後比較該像素的rgb值。顏色1和顏色2的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; 
} 
+0

你是如何包括圖書館的標題? – Jason 2014-10-08 18:18:05

+0

你能告訴我們RGBApixel的定義嗎? – 2014-10-08 18:18:51

+0

#include「EasyBMP.h」 – user2044600 2014-10-08 18:19:59

回答

2

我發現easybmp.sourceforge.net此代碼示例:

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

因此,'紅色','綠色'和'藍色'成員似乎使用大寫字母,而在您的代碼中,您試圖使用小寫字母訪問它們。所以你的編譯器是正確的,你試圖訪問的成員不存在。

只需將訪問成員的行從pixel.red等改爲pixel.Red即可。

+0

這就是我在手冊中看到的。 – user3344003 2014-10-08 18:24:51

相關問題