linux opencv打开两个USB摄像头

2023-05-16

在ubuntu linux系统下,摄像头设备是通过/dev/videox来表示的,如果只有一个摄像头,则会在/dev目录下显示 video0和video1两个设备,其中,video0是真实设备,而video1是一个虚拟设备。

1、多摄像头设备打开

当有两个USB摄像头时,会出现video0~video3 四个设备,其中video0和video2是真实设备,而video1和video3是虚拟设备,因此,只需要通过opencv打开video0和video2即可。通过opencv的VideoCapture打开多摄像头时,第一个设备video0对应的index为200,video2对应的index为200+2

代码如下:

int main() {
	VideoCapture cam1(200+2);
	VideoCapture cam0(200);
	while(true) {
		cv::Mat img0;
        cam0 >> img0;
        cv::Mat img1;
        cam1 >> img1;
        qDebug()<<img0.size << "   " <<img1.size;
	}
	return 0;
}

2、根据vid pid打开摄像头

int getUsbCameraVidPid(std::string devName, unsigned int &vid, unsigned int &pid)
{
    std::string str = devName;
    size_t pos = str.find_last_of("/");
    if (pos == std::string::npos) {
        fprintf(stderr, "  fail to get vid and pid\n");
        return -1;
    }
    std::string name = str.substr(pos+1);
    std::string modalias;
    vid = 0; pid = 0;
    if (!(std::ifstream("/sys/class/video4linux/" + name + "/device/modalias") >> modalias)) {
        return -1;
    }
    if (modalias.size() < 14 || modalias.substr(0,5) != "usb:v" || modalias[9] != 'p') {
        return -1;
    }
    if (!(std::istringstream(modalias.substr(5,4)) >> std::hex >> vid)) {
        return -1;
    }
    if (!(std::istringstream(modalias.substr(10,4)) >> std::hex >> pid)) {
        return -1;
    }

    fprintf(stdout, "  vid value: %d, pid value: %d\n", vid, pid);
    return  0;
}

int main() {
	int vid, int pid;
	// video2来作为例子,判断video2的pid
	std::string dev = "video2";
	int ret = getUsbCameraVidPid(dev, vid, pid);
	if (ret != 0) {
		return ret;
	}
	if (vid == 0x1234 && pid == 0x1212) { // check the pid and vid correct
		cv::Mat img;
		VideoCapture cam(200+2);
		while(true) {
			cv::Mat img;
	        cam >> img;
	        qDebug()<<img0.size << "   " <<img1.size;
		}
	}
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux opencv打开两个USB摄像头 的相关文章

  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • 设置 Apache POI 的路径

    我想创建 Excel 文件并使用 java 程序在该文件中写入数据 That is here http www techbrainwave com p 554我在 java 文件所在的位置提取了 Apache POI 并将该路径包含在路径变
  • 让 MongoDB 在 Linux 上监听远程连接

    我已在 Windows 本地计算机上 上成功安装 MongoDB 作为服务 但现在我想将 MongoDb 移动到单独的服务器 所以我将 tarball 解压到网络上的虚拟服务器 运行 Linux 当我从本地计算机使用 PuTTY 连接到服务
  • 如何使用 Python 裁剪图像中的矩形

    谁能给我关于如何裁剪两个矩形框并保存它的建议 我已经尝试过这段代码 但效果不佳 import cv2 import numpy as np Run the code with the image name keep pressing spa
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • 嵌入式Linux poll()不断返回

    我有一个特别的问题 当我知道没有什么可读时 民意调查不断返回 因此设置如下 我有 2 个文件描述符 它们构成fd设置民意调查监视 一种用于引脚从高到低的变化 GPIO 另一个用于代理输入 代理输入出现问题 处理的顺序是 启动main函数 然
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • xsel -o 对于 OS X 等效项

    是否有一个等效的解决方案可以在 OS X 中抓取选定的文本 就像适用于 Linux 的 xsel o 一样 只需要当前的选择 这样我就可以在 shell 脚本中使用文本 干杯 埃里克 你也许可以安装xsel在 MacOS 上 更新 根据 A
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 修改linux下的路径

    虽然我认为我已经接近 Linux 专业人士 但显然我仍然是一个初学者 当我登录服务器时 我需要使用最新版本的R 统计软件 R 安装在 2 个地方 当我运行以下命令时 which R I get usr bin R 进而 R version
  • 从 PL/SQL 调用 shell 脚本,但 shell 以 grid 用户而非 oracle 身份执行

    我正在尝试使用 Runtime getRuntime exec 从 Oracle 数据库内部执行 shell 脚本 在 Red Hat 5 5 上运行的 Oracle 11 2 0 4 EE CREATE OR REPLACE proced
  • awk 子串单个字符

    这是columns txt aaa bbb 3 ccc ddd 2 eee fff 1 3 3 g 3 hhh i jjj 3 kkk ll 3 mm nn oo 3 我可以找到第二列以 b 开头的行 awk if substr 2 1 1
  • Bash 解析和 shell 扩展

    我对 bash 解析输入和执行扩展的方式感到困惑 对于输入来说 hello world 作为 bash 中的参数传递给显示其输入内容的脚本 我不太确定 Bash 如何解析它 Example var hello world displaywh
  • 在 Python 中将 OpenCV 帧流式传输为 HTML

    我正在尝试从 opencv Pyt hon 中的 URL 读取视频 然后逐帧处理它 然后将其发送到 HTML 页面 But I am only getting the first frame after that the program g
  • 仅打印“docker-container ls -la”输出中的“Names”列

    发出时docker container ls la命令 输出如下所示 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a67f0c2b1769 busybox tail f dev
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何使用 colorchecker 在 opencv 中进行颜色校准?

    我有数码相机获取的色彩检查器图像 我如何使用它来使用 opencv 校准图像 按照以下颜色检查器图像操作 您是想问如何进行颜色校准或如何使用 OpenCV 进行校准 为了进行颜色校准 您可以使用校准板的最后一行 灰色调 以下是您应该逐步进行
  • cv2.drawContours() - 取消填充字符内的圆圈(Python,OpenCV)

    根据 Silencer的建议 我使用了他发布的代码here https stackoverflow com questions 48244328 copy shape to blank canvas opencv python 482465
  • 如何在 shell 脚本中并行运行多个实例以提高时间效率[重复]

    这个问题在这里已经有答案了 我正在使用 shell 脚本 它读取 16000 行的输入文件 运行该脚本需要8个多小时 我需要减少它 所以我将其划分为 8 个实例并读取数据 其中我使用 for 循环迭代 8 个文件 并在其中使用 while

随机推荐

  • java测试示例-生成ULID

    ULID全称Universally Unique Lexicographically Sortable Identifier xff0c 直译就是通用唯一按字典排序的标识符 xff0c 原始仓库是https github com ulid
  • jdk8-获取本机ip、判断ip范围、ip与long互转等

    在配置nginx的ip白名单时候 xff0c 会通过ip段进行配置 xff08 如 10 10 10 10 24 xff09 就在思考这种配置怎么通过代码解析并判断 xff0c 故通过搜索网络内容 xff0c 并通过java编写测试代码 代
  • python3通过文件头判断文件类型

    最近 xff0c 在学习python3中 xff0c 感觉入门挺简单 xff0c 毕竟本身是java开发 xff0c 很多容易理解一些东西 这几天对文件类型的验证有点想法 xff0c 就在网上搜索 xff0c 是找到了很多博客 xff0c
  • mysql数据数据表的排序规则修改

    在工作中同事遇到的问题 xff0c 是找一种简便的方法批量修改数据表字段的排序规则 xff0c 在MySQL中叫collation xff0c 和编码CHARACTER一起出现的 collation有三种级别 xff0c 分辨是数据库级别
  • linux 普通用户sudo无需手动敲密码

    普通用户在执行一些root权限的操作时 xff0c 需要用到sudo命令来执行 xff0c 同时需要手动输入密码 xff0c 比较繁琐 xff0c 下面的操作来减少手动输入密码 1 visudo命令编辑 etc sudoers文件 sudo
  • Qt QFile 删除文件最后n个字节的数据

    QFile无需打开文件 xff0c 即可删除文件最后面的n个字节的数据 方法很简单 xff0c 可以通过QFile自带的resize函数进行大小的处理 resize size 如果 size的大小大于file的大小 xff0c file后面
  • Qt中通过C++ 实现udp广播报文

    Qt UDP消息交互 udp广播原理介绍客户端实现方法客户端思路实现代码 服务端实现方法服务端思路实现代码 udp广播原理介绍 UDP是面向非连接的网络交互协议 xff0c 在UDP交互中 xff0c 存在客户端和服务端 xff0c 客户端
  • 实现手机app和微信小程序和树莓派智能音箱远程控制arduino获取甲醛温湿度和控制灯(esp8266 ZE08-CH2O DHT11 MQTT 语音识别 语言合成 http请求转串口通信系统 )

    首先你有这样的esp8266 这种esp8266自身带2个按键和烧录芯片方便调试 xff0c 综合性价比较高 需要有一个arduino uno 连接甲醛探测器和温湿度探测器 或者其他芯片都行 还有就是你要有树莓派和usb麦克风 xff0c
  • 什么是法线贴图?

    什么是法线贴图技术呢 xff1f 这是一种用来实现3D效果的一种技术 xff0c 要想理解这种技术还请您听我慢慢道来 我们知道 xff0c 在游戏中经常会有这样的情况 xff0c 就是一个平面 这个平面在现实中并不是一 个 平 面 xff0
  • 串口中断收发定长数据

    一 实验设计效果 配置串口助手波特率为115200 xff0c 传输数据长度为8 Bit xff0c 无奇偶校验位 xff0c 1个停止位 xff1b 通过串口助手向MCU发送指定长度的字符串 xff0c MCU接收到指定长度的字符串后 x
  • Qt 中C++ async实现并行处理

    在项目中 xff0c 难免遇到性能问题 xff0c 为了提高处理的性能 xff0c 针对可以并行处理的部分单独提取出来 xff0c 利用并行编程来提高处理的速度 xff0c 从而实现高性能 C 43 43 11中有一个async 函数 xf
  • 深度学习环境入门之手写数字识别

    在自己的windows环境下配置好了深度学习的环境 xff0c 本文主要记录一下用深度学习的环境下实现一个简单的手写数字识别的模型训练和使用 1 在pycharm中配置conda环境 xff1a 环境配置好以后 xff0c 可以开始手写数字
  • 算法之KMP算法 全新思路介绍!

    KMP算法是一个经典的字符串匹配算法 xff0c 也是一种常用的字符串匹配算法 在KMP算法没出现之前 xff0c 大家在字符串匹配的时候 xff0c 都是两个for循环嵌套完成字符串之间的匹配 这种算法称作 BF算法 xff08 暴力求解
  • c++ linux utf-8 编码 中文汉字分割(超简单代码)

    UTF 8 编码对于英文字母 xff0c 占用一个字节 xff1b UTF 8 编码对于中文字母 xff0c 占用多个字节 xff0c 最大占用6个字节 xff0c 其中第一个字节二进制的最高位连续1的个数来表示占用字节的个数 xff0c
  • 算法之并查集

    并查集 xff0c 顾名思义 xff0c 就是合并不同的集合 xff0c 并查集是一种集合合并和查找算法 这是一种思想很奇妙的算法 xff0c 学会它 xff0c 在你后续的程序学习中可以有很多的可以用的地方 什么是并查集 xff1f 举个
  • 算法之主成分分析PCA详解(包含理论推导和代码)

    1 PCA介绍 主成分分析算法 xff08 Principal Component Analysis xff09 简称PCA xff0c 是一种常用的统计方法 该方法对高维的数据进行筛选 xff0c 选出最具有代表性最重要的的几维数据 xf
  • linux 命令行进行桌面图标的打开

    近期在处理一个需求 xff0c 需要在代码中打开桌面的某个图标 xff0c 因此 xff0c 做了一些搜索 xff0c 最终发现 xff0c 有两个比较好用的命令 xff0c 下面来讲解一下 1 gtk launch 在linux系统一般已
  • 算法之滑动窗口寻找最长无重复字符串

    今天无聊的时候刷了一道leetcode的题目 xff0c 给定字符串 xff0c 查找最长无重复字符串 xff0c 具体题目信息如下 xff1a 给定一个字符串 s xff0c 请你找出其中不含有重复字符的 最长子串 的长度 示例 1 输入
  • 算法之图解单纯形算法C++

    在之前的算法博客中 xff0c 结合案例和算法的图形表示 xff0c 获得了较多同学的好评 xff0c 例如之前写的迪杰斯特拉算法这篇博客 xff0c 能够让很多新同学和老同学通过直观的方式去理解算法求解的过程 xff0c 这样理解起来会比
  • linux opencv打开两个USB摄像头

    在ubuntu linux系统下 xff0c 摄像头设备是通过 dev videox来表示的 xff0c 如果只有一个摄像头 xff0c 则会在 dev目录下显示 video0和video1两个设备 xff0c 其中 xff0c video