summaryrefslogtreecommitdiff
path: root/2003/i/buzz/src/camera/test_camera.cc
diff options
context:
space:
mode:
Diffstat (limited to '2003/i/buzz/src/camera/test_camera.cc')
-rw-r--r--2003/i/buzz/src/camera/test_camera.cc74
1 files changed, 58 insertions, 16 deletions
diff --git a/2003/i/buzz/src/camera/test_camera.cc b/2003/i/buzz/src/camera/test_camera.cc
index 1868ad5..b81f1dc 100644
--- a/2003/i/buzz/src/camera/test_camera.cc
+++ b/2003/i/buzz/src/camera/test_camera.cc
@@ -3,26 +3,68 @@
// Copyright (C) 2003 Nicolas Schodet
//
#include "camera.h"
+#include "erreur/erreur.h"
#include <fstream>
+#include <unistd.h>
+#include <stdio.h>
int
main (int argc, char **argv)
{
- Camera cam;
- ofstream o0 (argc >= 2 ? argv[1] : "camera0.raw");
- ofstream o1 (argc >= 3 ? argv[2] : "camera1.raw");
- ofstream o2 (argc == 4 ? argv[3] : "camera2.raw");
- int w, h;
- cam.getSize (w, h);
- unsigned char *image = new unsigned char[w * h * 3];
- cam.read (image);
- o0.write (image, w * h * 3);
- o0.close ();
- cam.read (image);
- o1.write (image, w * h * 3);
- o1.close ();
- cam.read (image);
- o2.write (image, w * h * 3);
- o2.close ();
+ try
+ {
+ Camera cam;
+ int w, h;
+ cam.getSize (w, h);
+ unsigned char *image = new unsigned char[w * h];
+ unsigned char *image2 = new unsigned char[w * h * 3];
+ for (int i = 0; i < 10; ++i)
+ {
+ char s[256];
+ sprintf (s, "camera%d.gray", i);
+ ofstream o (s);
+ while (cam.read (image) == 0) sleep (1);
+ o.write (image, w * h);
+ o.close ();
+ for (int j = 0; j < w * h; j += 4)
+ {
+ image2[j * 3] = image[j + 2];
+ image2[j * 3 + 1] = image[j + 1];
+ image2[j * 3 + 2] = image[j];
+ image2[(j + 1) * 3] = image[j + 2];
+ image2[(j + 1) * 3 + 1] = image[j + 1];
+ image2[(j + 1) * 3 + 2] = image[j];
+ image2[(j + 2) * 3] = image[j + 2];
+ image2[(j + 2) * 3 + 1] = image[j + 1];
+ image2[(j + 2) * 3 + 2] = image[j];
+ image2[(j + 3) * 3] = image[j + 2];
+ image2[(j + 3) * 3 + 1] = image[j + 1];
+ image2[(j + 3) * 3 + 2] = image[j];
+ }
+ sprintf (s, "camera%d.rgb", i);
+ o.open (s);
+ o.write (image2, w * h * 3);
+ o.close ();
+ for (int j = 0; j < w * h; j += 4)
+ {
+ int t = (int) image[j + 2] >> 2 - (int) image[j + 1] >> 2;
+ t = t > 0 ? t : -t;
+ image2[j] = t;
+ image2[j + 1] = t;
+ image2[j + 2] = t;
+ image2[j + 3] = t;
+ }
+ sprintf (s, "camera%d.diff.gray", i);
+ o.open (s);
+ o.write (image2, w * h);
+ o.close ();
+ }
+ return 0;
+ }
+ catch (Erreur &e)
+ {
+ cout << e.what ();
+ return 1;
+ }
}