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

时间:2017-01-16 07:52:53

标签: 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;
 }

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

1 个答案:

答案 0 :(得分:0)

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

您应使用libuvc之类的东西。

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

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

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

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