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.
InformationsquelleAutor Khadija | 2012-08-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Sony EyeToy hat eine OV7648-sensor mit der sehr beliebten OV519-Brücke. Die OV519 Ausgänge Bilder in JPEG - format und wenn ich mich richtig erinnere aus meiner eigenen Kameras das ist das einzige format, das es unterstützt.
Kameras wie diese erfordern entweder die Anwendung unterstützen, oder einen speziellen Treiber, entpacken Sie die frames, die vor Lieferung zu userspace. Anscheinend ist in deinem Fall die Treiber liefert die JPEG-Bilder in Ihrer ursprünglichen form, die ist, warum Sie immer JPEG-Daten in der Ausgabe.
BTW, Sie sollten wirklich einen Blick auf die Video4Linux2-API für den richtigen Weg, um Zugriff auf video-Geräte auf Linux - eine einfache
open()/read()/close()
ist in der Regel nicht genug...InformationsquelleAutor thkala