用于网络摄像头捕获的 C 程序

Ahm*_*dem 2 c ubuntu webcam-capture

我正在编写一个简单的 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;
 }
Run Code Online (Sandbox Code Playgroud)

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

Gon*_*ado 5

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

你应该使用像 libuvc 这样的东西。

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

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

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

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