Leseausgabe einer USB-Webcam unter Linux

Ich habe ein bisschen mit Fread und Fwrite in C experimentiert. Also habe ich dieses kleine Programm in C geschrieben, um Daten von einer Webcam zu erhalten und in eine Datei zu kopieren. Folgendes 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;
}

Das Programm funktioniert beim Kompilieren (gcc -o snap camera.c). Was mich überrascht hat, war, dass es sich bei der Ausgabedatei nicht um einen Rohdatenspeicherauszug, sondern um eine JPEG-Datei handelte. Ausgabe derfile Befehl unter Linux in der Programmausgabedatei zeigte, dass es sich um JPEG-Bilddaten handelte: JFIF Standard 1.01. Die Datei konnte auf einem Bildbetrachter angezeigt werden, obwohl sie ein wenig gesättigt war.

Wie oder warum passiert das? Ich habe keine JPEG-Codierungsbibliotheken in der Quelle oder im Programm verwendet. Gibt die Kamera JPEG nativ aus? Die Webcam ist eine Sony Playstation 2 EyeToy, die von Logitech hergestellt wurde. Das System ist Debian Linux.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage