v4l2 c++ 获取电脑上的摄像头列表
时间: 2023-10-16 09:39:49 浏览: 219
获取电脑上的摄像头列表可以使用视频4Linux2(v4l2)API。以下是一个使用C++编写的示例代码,可以列出可用的摄像头设备:
```cpp
#include <iostream>
#include <fstream>
#include <dirent.h>
#include <cstring>
#include <linux/videodev2.h>
using namespace std;
int main()
{
DIR* dir = opendir("/dev");
struct dirent* entry;
while ((entry = readdir(dir)) != NULL)
{
if (entry->d_type == DT_CHR && strncmp(entry->d_name, "video", 5) == 0)
{
string devicePath = "/dev/" + string(entry->d_name);
int fd = open(devicePath.c_str(), O_RDWR);
if (fd != -1)
{
struct v4l2_capability caps;
if (ioctl(fd, VIDIOC_QUERYCAP, &caps) != -1)
{
cout << "Found device: " << devicePath << endl;
cout << " Driver: " << caps.driver << endl;
cout << " Card: " << caps.card << endl;
cout << " Bus: " << caps.bus_info << endl;
}
close(fd);
}
}
}
closedir(dir);
return 0;
}
```
该代码打开/dev目录并遍历其中的所有设备文件。对于每个视频设备文件,它打开文件并使用VIDIOC_QUERYCAP命令查询设备的能力。如果成功,则输出设备的路径、驱动程序、卡名和总线信息。
请注意,要编译此代码,您需要链接libv4l2库。
阅读全文