C'yle birlikte biraz fread ve deneme yazıyordum. Bu küçük programı bir web kamerasından veri almak ve bir dosyaya dökmek için C'ye yazdım. (gcc -o snap camera.c
) derlenmiş zamanLinux'taki bir USB web kamerasının okuma çıktısı
#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;
}
programı çalışır: Aşağıdaki kaynağıdır. Beni şaşırtan şey, çıktı dosyasının ham bir veri dökümü değil, bir JPEG dosyası olmasıydı. Program çıktı dosyasındaki linux üzerindeki file
komutunun çıktısı bir JPEG resim verisi olduğunu gösterdi: JFIF Standard 1.01. Dosya, biraz doygun olsa da, bir resim görüntüleyicide görüntülenebilir.
Bu nasıl veya nasıl oluyor? Kaynak veya programda herhangi bir JPEG kodlama kütüphanesi kullanmadım. Kamera doğal olarak JPEG çıkışı veriyor mu? Webcam, Logitech tarafından üretilen bir Sony Playstation 2 EyeToy. Sistem Debian Linux.
iyi ki kamera çıkışları jpegler olabilir. – doron