现象:

树莓派4b或3b+   插着两个USB免驱相机

摄像头朝着灯就会报 time out

摄像头不朝着灯就不报

问题:

功率不够

朝着灯可能触发了USB相机的曝光补偿导致功率变大

解决:

使用带额外供电的hub

linux下调用相机出现select timeout错误,有可能是相机(尤其是USB2.0相机)插在2.0接口上时,端口供电能力不足。如果排查了其他问题还没有解决,可以看看有没有这个端口的问题。

V4L2的select函数的最后一个参数是timeout,timeout是用来设置超时时间的,设置了timeout以后,如果select在没有文件描述符监视可用的情况下,会等待这个timeout,超过这时间select就会返回错误。

当遇到select timeout错误的时候,不能只考虑调大timeout的时间,实际上这是治标不治本,timeout不可能调的很大,调大一点又没什么用,肯定还是有别的传输阻塞之类的问题。这个问题困扰了很久,后来就想,会不会是渣本的端口不行,换了个3.0接口的电脑,再没有出现这个问题,这个问题咨询了相机厂家,他们的回答是USB2.0相机的传输和供电是做在一起的,因此不是很稳定,当数据传输和供电之间可能会相互影响,关于这个怎么影响的我搞不清楚,但是这个问题不妨作为一个额外的检查思路吧。

给题主做个参考吧,罗技c270(分辨率720P)工作状态下大约需要0.2A,单个usb2.0接口一般保守设计电流0.5A,usb3.0 1A,所以单口保底拖2个是没问题的,如果你的摄像头如果带夜视的话夜间功率会飙升,这个要根据实际情况分析了,不过这种情况也可以使用带供电口的usb hub解决。

接四个摄像头问题不大,辅助供电头+充电器就能搞定。

opencv读取USB相机select timeout问题的更多相关文章

  1. python opencv 读取USB摄像头的像素问题

    问题描述 每次调用capture读取video的时候,还回的像素都是640x480,不管是笔记本的摄像头还是USB摄像头,明明我的摄像头是支持130万读取的功能的呀. 问题分析 一番查找,关于用ope ...

  2. 系统---添加一个相机的IP实现opencv读取rstp视频流

    系统---添加一个相机的IP实现opencv读取视频流 这里: 第一步,添加一个6段的相机IP地址:先ping 一个IP地址,ping通的是再用的IP,不可添加:ping不通的,添加IP到网络. 第二 ...

  3. USB系列之二:读取USB设备的描述符

    在前面的文章中,我们已经给出了USB协议的链接地址,从这篇文章起,我们会涉及到许多USB 1.1的内容,我们的指导思想是先从熟悉USB 1.1协议入手,先使用现成的HCD和USBD,直接面对客户端驱动 ...

  4. 虚拟机上使用 opecnv 读取USB摄像头无法显示

    使用opecv读取USB摄像头时候,无法显示图像. 设置 首先查看虚拟机Ubuntu检测摄像头是否已正常插入: ls /dev/video* 结果为: 设置虚拟机USB属性: USB的兼容性设置为US ...

  5. 【计算机视觉】opencv读取多个摄像头

    [计算机视觉]opencv读取多个摄像头 标签(空格分隔): [图像处理] 说明:今天蹭了机器视觉课程,讲到了stereopsis,立体视觉,讲到了关于通过多个摄像头获取object的depth信息的 ...

  6. 虚拟机下Linux读取USB设备的问题虚拟机下Linux无法读取USB设备的解决方案

    我们在虚拟机中识别USB设备有三种情况导致Linux系统不能读取到USB设备: 1. .当虚拟机的USB服务没有开启的时候 2. 若虚拟机的USB连接的设置选项没有设置好 3. Widows抢先一步, ...

  7. Opencv读取各种格式图片,在TBitmap上面重绘

    //opencv读取图片 cv::Mat image; //const char *fileName = "HeadImage-UI/Photo-001.bmp"; const c ...

  8. 读取USB HDD(USB移动硬盘信息)序列号的代码

    读取USB HDD(USB移动硬盘)序列号的代码,型号及分位. 使用Visual Studio 2010编译成功. 代码使用了CrystalDiskInfo中的代码smartata.c中相关代码: 例 ...

  9. opencv读取摄像头实时流代码

    opencv读取摄像头实时流代码: #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; ...

随机推荐

  1. AcWing 44. 分行从上往下打印二叉树

    地址 https://www.acwing.com/problem/content/description/42/ 题目描述从上到下按层打印二叉树,同一层的结点按从左到右的顺序打印,每一层打印到一行. ...

  2. acwing 70-72 剑指OFFER 二叉树相关

    地址 https://www.acwing.com/problem/content/66/ https://www.acwing.com/problem/content/67/ https://www ...

  3. 最小化MarkdownPad 2安装体积(win10)

    一.原因 MarkdownPad2在Win10当中可能无法正常运行,右侧预览界面会出现错误"This view has crashed!"查阅官网FAQ得知大多数情况下安装Awes ...

  4. MQ的幂等性和解决方案

    1.幂等性 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同.通俗的讲就一个数据,或者一个请求,给你重复来多次,你得确保对应的数据是不会改变的,不能出错:类似于数据库中的乐 ...

  5. spring+eureka+zuul

    最近在看一个关于spring+eureka+zuul的教学视频,终于明白了eureka是用于提供服务注册和发现的service,通过eureka各个service可以知道其他service,这样就隔离 ...

  6. console调试技巧

    1.console.log() 我们经常会使用console.log来打印出某个变量的值或者某个实体对象,也可以传入多个变量参数,它会按照传入顺序进行打印: 1. 传入一个变量 const a = 1 ...

  7. Mybatis框架增删改查

    一.recourses中核心配置文件mybatis-config.xml 二. recourse中jdbc.properties 三.entity实体类 四.ISmbmsUserDao层 五.ISmb ...

  8. python面试题及答案 2019

    利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法. 正解1: def trim(s): while s[:1] == ' ': s = s[1:] ...

  9. .net core下使用DbProviderFactories.GetFactory("")无法创建工厂的解决方案

    前言:我们有时候会有一种需求,需要连接很多的数据库,如:mysql,sqlserver,oracle等等,需要把这些数据库里的数据抽取出来加工后,返回给客户端使用. 在.net framework中是 ...

  10. JavaScript的七种数据类型

    我知道这个话题网上说法非常多,甚至还有分出什么"Array,Function"之类的阿猫阿狗的类型.今天来整理这个话题的时候,先贴一张MDN官方的说法: 这个分法是对的,也是目前来 ...