我正在用C中的fread和fwrite进行一些实验.所以我用C编写了这个小程序来从网络摄像头获取数据并将其转储到文件中.以下是来源:
#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;
}
Run Code Online (Sandbox Code Playgroud)
该程序在编译(gcc -o snap camera.c)时有效.令我惊讶的是输出文件不是原始数据转储而是JPEG文件.file在程序输出文件上输出linux上的命令显示它是JPEG图像数据:JFIF Standard 1.01.该文件在图像查看器上可见,但有点饱和.
这是怎么发生的?我没有在源代码或程序中使用任何JPEG编码库.相机是否原生输出JPEG?网络摄像头是由Logitech制造的Sony Playstation 2 EyeToy.该系统是Debian Linux.