summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/img.cc
diff options
context:
space:
mode:
Diffstat (limited to '2004/i/nono/src/ovision/img.cc')
-rw-r--r--2004/i/nono/src/ovision/img.cc41
1 files changed, 39 insertions, 2 deletions
diff --git a/2004/i/nono/src/ovision/img.cc b/2004/i/nono/src/ovision/img.cc
index 60469ad..4fcc7b9 100644
--- a/2004/i/nono/src/ovision/img.cc
+++ b/2004/i/nono/src/ovision/img.cc
@@ -32,8 +32,6 @@ Img::~Img (void) {
delete [] tabData;
}
-
-
/// Convertit un tableau de donnees RGB en YUV
void Img::RGBtoYUV() {
unsigned char r,g,b;
@@ -70,6 +68,26 @@ void Img::RGBtoHSI() {
}
}
+/// Convertit un tableau de donnees YUV en RGB
+void Img::YUVtoRGB()
+{
+ unsigned char y,u,v;
+
+ yuv = false;
+
+ // Parcours du tableau et conversion des valeurs YUV en RGB
+ for (unsigned long i=0; i<nbPixels; i++) {
+ y = tabData[i*3];
+ u = tabData[i*3+1];
+ v = tabData[i*3+2];
+
+ tabData[i*3] = (unsigned char)(y + (1.4075 * (v - 128)));
+ tabData[i*3+1] = (unsigned char)(y + ((0.3455 * (u - 128)) - (0.7169 * (v - 128))));
+ tabData[i*3+2] = (unsigned char)(y + (1.7790 * (u - 128)));
+ }
+}
+
+
/// Ecrit les valeurs RGB dans un fichier
void Img::WriteRGB(char *filename) {
@@ -81,6 +99,25 @@ void Img::WriteRGB(char *filename) {
fclose(file);
}
+/// Charge les valeurs RGB dans un fichier
+void Img::LoadRGB(char *filename, int mode, int width, int height) {
+
+ this->width = width;
+ this->height = height;
+ nbPixels = width * height;
+ delete[] tabData;
+ tabData = new unsigned char[nbPixels*3];
+ yuv = mode;
+
+ FILE *file;
+ file = fopen(filename, "r");
+
+ fread(tabData, 3, width*height, file);
+
+ fclose(file);
+}
+
+
/// Lit une image depuis un ImageLoader.
void
Img::load (ImageLoader &loader)