00001 00023 #ifndef PIXEL_HSV_H 00024 #define PIXEL_HSV_H 00025 00026 #include <iostream> 00027 00028 using namespace std; 00029 00030 class PixelHSV 00038 { 00051 // friend ostream& operator << (ostream& os, PixelHSV& p) 00052 // { 00053 // os << "(" << p[0] << "," << p[1] << "," << p[2] << ")"; 00054 // return os; 00055 // } 00056 00057 public: 00058 unsigned short int hue; //16bit | 00059 unsigned char sat; //8bit |> 32bit 00060 unsigned char val; //8bit | 00061 00062 public: 00068 PixelHSV() 00069 { } 00070 00071 00078 PixelHSV(unsigned short int h, unsigned char s, unsigned char v) 00079 { 00080 hue = h; 00081 sat = s; 00082 val = v; 00083 } 00084 00085 00096 PixelHSV& operator = (PixelHSV& p) 00097 { 00098 hue = p.hue; 00099 sat = p.sat; 00100 val = p.val; 00101 00102 return *this; 00103 } 00104 00105 00116 // int& operator [] (int i) 00117 // { 00118 // return pixel[i]; 00119 // } 00120 00121 00132 // const int& operator [] (int i) const 00133 // { 00134 // return pixel[i]; 00135 // } 00136 00137 00149 bool operator == (PixelHSV& p) 00150 { 00151 return ( hue == p.hue 00152 && sat == p.sat 00153 && val == p.val); 00154 } 00155 00156 00169 bool operator != (PixelHSV& p) 00170 { 00171 return ( hue != p.hue 00172 || sat != p.sat 00173 || val != p.val); 00174 } 00175 00187 PixelHSV& operator += (PixelHSV& p) 00188 { 00189 hue += p.hue; 00190 sat += p.sat; 00191 val += p.val; 00192 00193 return *this; 00194 } 00195 00206 PixelHSV& operator -= (PixelHSV& p) 00207 { 00208 hue = -hue; 00209 sat = -sat; 00210 val = -val; 00211 00212 return *this; 00213 } 00214 00224 PixelHSV& operator *= (double k) 00225 { 00226 hue = (int) (k*(double)hue); 00227 sat = (int) (k*(double)sat); 00228 val = (int) (k*(double)val); 00229 00230 return *this; 00231 } 00232 00233 00234 PixelHSV& operator *= (PixelHSV& p) 00235 { 00236 hue *= p.hue; 00237 sat *= p.sat; 00238 val *= p.val; 00239 00240 return *this; 00241 } 00242 00243 PixelHSV& operator /= (PixelHSV& p) 00244 { 00245 hue /= p.hue; 00246 sat /= p.sat; 00247 val /= p.val; 00248 00249 return *this; 00250 } 00251 00252 }; 00253 00254 00255 #endif // PIXEL_HSV_H
1.4.4