summaryrefslogtreecommitdiff
path: root/2004/i/nono/src/ovision/img.cc
diff options
context:
space:
mode:
authorgaillaro2004-05-09 21:37:06 +0000
committergaillaro2004-05-09 21:37:06 +0000
commit36ead8cdaae97b3bb3647998582d29800b54155f (patch)
tree4e6f1ca8c4e6f6541a89eb97b12aec6cea9a6996 /2004/i/nono/src/ovision/img.cc
parenteccb4edb57c0661e57d0c632be7ca9f78e233153 (diff)
test des coordonnes
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)