/*Spiros Ioannou 2/2000 */ /*sivann@softlab.ece.ntua.gr*/ #include #include #include #include #include #include #include #include #include #include /*#include */ #include "../conf.h" void save_ppm(char *filename, unsigned char *pic); int main() { int dev; /* the device we will use */ int len; char device[FILENAME_SIZE] = "/dev/video0"; unsigned char pic[MAX_RGBA_IMAGE_SIZE]; char filename[FILENAME_SIZE] = "./test.ppm"; dev = open (device, O_RDWR); if (dev < 0) { perror(device); exit(1); } fprintf(stderr, "about to read\n"); len = read(dev, pic, MAX_RGBA_IMAGE_SIZE); if (len == 0 || len == -1) { fprintf(stderr, "error reading camera device\n"); exit(0); } fprintf(stderr, "read\n"); /*while((len = read(dev, pic, MAX_RGBA_IMAGE_SIZE)) <= 0) { if(errno != 0 && errno != EINTR) { fprintf(stderr, "Error read image\n"); exit(0); } }*/ save_ppm(filename, pic); exit(0); } void save_ppm(char *filename, unsigned char *pic) { FILE *outfile; unsigned char buff[3]; int i; if (!(outfile=fopen(filename,"w"))) { perror(filename); exit(errno); }; fprintf (outfile, "P6\n%d %d\n%d\n", 640, 480, 255); for (i = 0; i < 640*480*3; i+=3) { buff[0] = pic[i]; /* r */ buff[1] = pic[i+1]; /* g */ buff[2] = pic[i+2]; /* b */ fwrite (buff, 1, 3, outfile); } fclose(outfile); }