Das Lesen der Ausgabe von einer USB-webcam unter Linux

War ich Experimentieren mit ein wenig mit fread und fwrite in C. Also schrieb ich dieses kleine Programm in C, um Daten von einer webcam und werfen Sie es in eine Datei. Das folgende ist die Quelle:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 307200 //number of pixels (640x480 for my webcam)
int main() {
    FILE *camera, *grab;
    camera=fopen("/dev/video0", "rb");
    grab=fopen("grab.raw", "wb");
    float data[SIZE];
    fread(data, sizeof(data[0]), SIZE, camera);
    fwrite(data, sizeof(data[0]), SIZE, grab);
    fclose(camera);
    fclose(grab); 
    return 0;
}

Funktioniert das Programm bei der Kompilierung (gcc -o snap camera.c). Was mich überrascht war, dass die Ausgabe-Datei wurde nicht mit einem raw-Daten-dump, aber eine JPEG-Datei. Ausgabe der file Befehl unter linux die Programme, die output-Datei zeigte, war es ein JPEG-Bild Daten: JFIF Standard 1.01. Die Datei war sichtbar auf einem Bild-viewer, obwohl ein wenig gesättigt.

Wie oder warum geschieht dies? Ich habe keinerlei JPEG-Kodierung Bibliotheken in der Quelle oder des Programms. Hat die Kamera JPEG-Ausgabe nativ? Die webcam ist eine Sony Playstation 2 EyeToy, welches hergestellt wurde von Logitech. Das system ist Debian-Linux.

könnte gut sein, dass die Kamera-Ausgänge jpegs.

InformationsquelleAutor Khadija | 2012-08-06

Schreibe einen Kommentar