准备条件

  1. 安装udev: sudo apt-get install libudev-dev
  2. 项目引入头文件:#include <libudev.h>
  3. 项目添加:cmake添加udev库 libudev.so

代码实现

//get vidpid->index
int GetCameraId(int &id,std::string vid,std::string pid)
{struct udev *udev = NULL;struct udev_enumerate *udev_enumerate = NULL;struct udev_list_entry *list_entry = NULL;int count = 0;udev = udev_new(); if (udev == NULL){loge("udev null");return -1;} udev_enumerate = udev_enumerate_new(udev);  if(udev_enumerate == NULL){loge("udev_enumerate null");udev_unref(udev);return -1;}udev_enumerate_add_match_subsystem(udev_enumerate, "video4linux");udev_enumerate_scan_devices(udev_enumerate);udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(udev_enumerate)) {struct udev_device *device = NULL;device = udev_device_new_from_syspath(udev_enumerate_get_udev(udev_enumerate), udev_list_entry_get_name(list_entry)); const char* buff=udev_device_get_property_value(device, "ID_MODEL_ID");if(device != NULL){       if((udev_device_get_property_value(device, "ID_VENDOR_ID") != NULL) && (udev_device_get_property_value(device, "ID_MODEL_ID") != NULL) &&(vid == std::string(udev_device_get_property_value(device, "ID_VENDOR_ID"))) &&(pid == std::string(udev_device_get_property_value(device, "ID_MODEL_ID")))) {//LOG(sw_MS, "device: '%s' (%s) (/dev/video%s) %s:%s\n",//udev_device_get_syspath(device),//udev_device_get_subsystem(device),//udev_device_get_sysnum(device),//udev_device_get_property_value(device, "ID_VENDOR_ID"), // 查询设备信息 udevadm info --query=all --name=/dev/video0//udev_device_get_property_value(device, "ID_MODEL_ID"));//sprintf(PathName, "/dev/video%s", udev_device_get_sysnum(device));id = atoi(udev_device_get_sysnum(device));count++;  logd("canemra id:{},count:{}",id,count);break;}            udev_device_unref(device);        }else{loge(" device null!!");udev_enumerate_unref(udev_enumerate);udev_unref(udev);return -1;}}if(count == 0){loge(" device count error!!");udev_enumerate_unref(udev_enumerate);udev_unref(udev);return -2;}udev_enumerate_unref(udev_enumerate);udev_unref(udev);return 0;
}

opencv打开摄像头

** 根据vidpid获取到的索引打开摄像头**

   cv::VideoCapture rgb_cap;cv::VideoCapture ir_cap;std::string rgb_strIndex="/dev/video"+std::to_string(g.rgb_index);logi("rgb path:{}",rgb_strIndex);std::string ir_strIndex="/dev/video"+std::to_string(g.ir_index);logi("ir path:{}",ir_strIndex);//rgbrgb_cap.open(rgb_strIndex);

Linux通过vidpid找到摄像头对应的索引相关推荐

  1. linux 命令行 webcamera,如何在Linux上运行网络摄像头(Run a Webcam on Linux)?

    在Linux上安装.配置和运行网络摄像头可以是一个相当简单的过程,也可以是一个相当复杂的过程.有许多步骤可以帮助顺利安装,每个网络摄像头和计算机设置都会有自己的怪癖和潜在的问题.用最简单的形式,要在L ...

  2. Linux 如何快速找到运行中的进程

    通俗的讲程序是一个包含可以执行代码的静态的文件.进程是一个开始执行但是还没有结束的程序的实例.这篇文章给大家介绍Linux 快速找到运行中的进程的方法,小编觉得很有价值,分享给大家 1 进程概述 通俗 ...

  3. linux摄像头 自动对焦,基于H3在Linux下驱动OV5640摄像头的方法与流程

    技术特征: 1.基于H3在Linux下驱动OV5640摄像头的方法,其特征在于,包括如下步骤: S1打开OV5640摄像头所对应的设备文件/dev/videoX: S2为OV5640摄像头驱动添加读写 ...

  4. linux 找u盘,linux系统怎样找到U盘?

    linux系统怎样找到U盘? 精选 更新时间:2019-10-27 00:12 最满意答案 1. 用FDISK-l 来找,一般U盘会被LINUX认为SCSI设备,如果有SCSI设备那么U盘一般是最后一 ...

  5. Mac无法找到摄像头问题解决

    Mac无法找到摄像头问题解决 参考文章: (1)Mac无法找到摄像头问题解决 (2)https://www.cnblogs.com/davad/p/4906740.html 备忘一下.

  6. 国外linux内核视频播放器,基于Video for Linux内核的USB摄像头视频信号采集实现

    摘要:Video for Linux是Linux中关于视频设备的内核驱动,本文介绍了在Video for Linux内 >> 基于ARM9和USB摄像头的网络视频采集系统设计 基于嵌入式V ...

  7. Linux(固定USB摄像头硬件端口,绑定前后置摄像头)

    修改点如下,通过节点名称判断usb判断video --- a/kernel/drivers/media/usb/uvc/uvc_driver.c +++ b/kernel/drivers/media/ ...

  8. linux驱动编写(摄像头驱动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 对于现代嵌入式设备,特别是手机来说,摄像头是很重要的一个设备.很多同学买手机,一看颜值,第二就看 ...

  9. php调用linux摄像头,Linux_在Linux操作系统上使用摄像头,我的公家笔记本的摄像头一直 - phpStudy...

    我的公家笔记本的摄像头一直没啥用,偶尔用 vmware player 2.0模拟个 msn 用(其实到目前一次都没用过).搞过安全对这东西严重不信任通常都不驱动,忽然想起重案6组那个警察兄弟说搞高科技 ...

最新文章

  1. windows上的svn服务器迁移到linux
  2. 终于!北京无人车,今起也能免费坐
  3. Oracle物理存储结构--文件
  4. em算法怎么对应原有分类_EM算法原理
  5. 三步法搞定CTF中的SQL注入题型
  6. Nginx的动态代理,负载均衡,动静分离的简单使用
  7. linux下面使用飞书个人版预览doc
  8. linux下云翔php,《云翔曲谱》目录
  9. Java 每半年就会更新一次新特性,再不掌握就要落伍了:Java14 的新特性
  10. CSS中设置单机按钮,实现按下效果
  11. IDEA修改静态资源(html)不重启,即时生效
  12. 代理IP如何解决爬虫IP被封
  13. FMM 大战 LMM - SOFR 企稳 Part III
  14. PCB中贴片元件封装焊盘尺寸的规范
  15. 01背包问题---动态规划
  16. TeraTerm的设定
  17. 2021全球与中国视频编辑软件市场现状及未来发展趋势
  18. APT34泄密武器分析报告
  19. java算法:递归算法
  20. BotFramework-WebChat 实现点击标签发送消息

热门文章

  1. 奇迹s17可视化排行,装备栏,仓库php网站系统
  2. 工具篇 之 简单掌握 Chrome 以及 IE DeBug 。。。
  3. 傻白入门芯片设计,三大基本定律(十)
  4. 【微信小程序使用canvas绘制二维码】
  5. 支付宝:批量付款到支付宝账户有密接口
  6. 如何隐藏IP地址的网站
  7. Blizzard的MPQ文件格式搜索算法---来自Gameres bbs
  8. intellij idea快速切换大小写
  9. 自学Java如何正确入门?
  10. 计算机格式化后能恢复数据吗,格式化数据恢复 电脑格式化了还能恢复吗?原来找回如此简单!...