我正在编写一个简单的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文件?
答案 0 :(得分:0)
这行不通。由于相机是一台复杂的设备,因此必须设置分辨率,配色方案和其他一些重要数据才能开始捕获。
您应使用libuvc之类的东西。
https://ken.tossell.net/libuvc/doc/group__device.html
您可以在此处检查。在614行中,他们试图找到一种设备并将其用于摄像头抓取。我认为这是一个很好的例子。
https://github.com/gadLinux/OpenHMD-RiftPlayground/blob/master/src/main.c
基本上,您必须初始化上下文,找到相机并使用它。