0

我正在编写一个简单的 C 代码,用于从我的网络摄像头捕获并将其保存为 Ubuntu 上的 jpeg 文件。这是使用的代码:

 #include <stdio.h>
 #include <stdlib.h>
 #define SIZE 76800 // number of pixels (320x240 for my webcam)
 int main() {
    FILE *camera, *grab;
    camera=fopen("/dev/video0", "rb");
    grab=fopen("grab.jpeg", "wb");
    float data[SIZE];
    fread(data, sizeof(data[0]), SIZE, camera);
    fwrite(data, sizeof(data[0]), SIZE, grab);
    fclose(camera);
    fclose(grab); 
    return 0;
 }

生成的文件不是 jpeg,如何修改我的代码以在最后获取 jpeg 或 png 文件?

4

1 回答 1

3

这行不通。因为相机是一个复杂的设备,你必须设置分辨率、配色方案和其他一些重要数据才能开始捕捉。

你应该使用类似 libuvc 的东西。

https://ken.tossell.net/libuvc/doc/group__device.html

你可以在这里查看。在第 614 行,他们试图找到一个设备并将其用于摄像头抓取。我认为这是一个很好的例子。

https://github.com/gadLinux/OpenHMD-RiftPlayground/blob/master/src/main.c

基本上你必须初始化上下文,找到相机并使用它。

于 2018-11-25T20:27:04.137 回答