小编Kha*_*ija的帖子

在Linux中读取USB网络摄像头的输出

我正在用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.

c webcam jpeg image

11
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×1

image ×1

jpeg ×1

webcam ×1