Ubuntu16.04 下 python opencv 视频采集:使用USB端口映射指定要读取的相机设备

有时我们需要读取指定设备的视频流,但笔记本电脑通常自带相机,同时可能连接多个USB相机,每次插拔USB后系统自动分配的端口号可能会改变。为了省去每次在命令行里查找设备端口编号的麻烦,可以给自己想读取的设备指定名称(即进行端口映射)。

本教程适用于 ubuntu 16.04 系统。

使用 python opencv 视频采集

在 python 代码里读取USB摄像头并显示是opencv的一个基本功能。代码网上有很多,这里放一个简易版本(核心功能:读取USB摄像头+实时显示)

import cv2
cap = cv2.VideoCapture(0)  # /dev/video0
while(True):ret, frame = cap.read()  # ret==True/False: read successfully or not; frame: imageif not ret:print("Failed to read the image.")break# display imagecv2.imshow('Video', frame)# press ESC key to exitkey = cv2.waitKey(1)if key == 27:break
cap.release()
cv2.destroyAllWindows()

此处,cap = cv2.VideoCapture(0) 的功能就是读取来自 /dev/video0 这个端口的视频流。
我们可以看一下opencv VideoCapture 的官方文档的描述:

<VideoCapture object> = cv.VideoCapture( index )
index: ID of the video capturing device to open.

电脑默认相机的ID是0。
我们的任务就是把 index 这个地方换成我们想要的设备的名字,以便不用每次查看端口编号。

识别你的指定设备,进行端口映射

1、识别你的设备
首先,插上你想要读取的设备, 打开终端,输入:

lsusb

再拔掉那个设备,继续在终端里输入:

lsusb

仔细对比两次显示内容的区别,找到消失的那一行,例如:

Bus 002 Device 003: ID 04b4:00f8 Cypress Semiconductor Corp.

这就是你想要的设备。
记住 04b4:00f8 这个位置的数字, 04b4 是设备的 idVendor ,00f8 是设备的 idProduct

2、创建端口映射

在终端里输入:

cd /etc/udev/rules.d
sudo touch usb.rules
sudo gedit usb.rules

我们创建了一个空白的 usb.rules 文件
把下面这句话复制进去,其中 idVendoridProduct 的值根据上一步中你设备的具体情况修改。SYMLINK 的值是你想给设备取的名字,例如 mycamera

KERNEL=="video*", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="00f8", MODE:="0777", SYMLINK+="mycamera"

在终端里输入:

sudo service udev reload
sudo service udev restart

3、检查映射情况

在终端里输入:

ls -l /dev | grep video

如果端口映射成功,你将会看到有一行是

lrwxrwxrwx 1 root root 6 Apr 14 12:18 mycamera -> video0 (也可能是1、2、3……)

修改 opencv VideoCapture() 里的参数为设备名称

回到一开始采集视频的代码,修改:

cap = cv2.VideoCapture("/dev/mycamera")

这样,每次插拔USB和使用多个相机都不会影响程序对指定设备视频流的读取了。

Ubuntu系统下python opencv视频采集:使用USB端口映射指定要读取的相机设备相关推荐

  1. 【嵌入式】在Ubuntu系统下通过OpenCV实现点阵汉字的字模读取与显示

    介绍汉字点阵的原理,理解汉字的机内码.区位码编码规则和字形数据存储格式,通过OpenCV在Ubuntu系统下显示点阵汉字 一.汉字点阵原理 1.汉字点阵原理 1.点阵 2.汉字编码 3.点阵字库存储 ...

  2. SyntaxError: Non-ASCII character '\xe9' in file...ubuntu系统下python运行时提示编码格式不正确以及提示No module named xxx

    在Ubuntu 18下创建django项目,运行python文件时报错: SyntaxError: Non-ASCII character '\xe9' in file /home/image/桌面/ ...

  3. Ubuntu系统下基于Opencv完成图像编程

    文章目录 一.OpenCV简介 二.安装OpenCV 2.1 安装包下载 2.2 使用cmake安装 2.3 配置环境 三.使用实例 3.1 图片运用 3.2 视频运用 四.总结 五.参考文献 一.O ...

  4. Ubuntu系统下Python虚拟环境构建详解

    在编程开发中,我们经常会利用不同版本的协助软件包,这样就导致一些软件不能兼容,为了解决这个问题呢,我们在儿引进Python虚拟环境,我们安装好虚拟环境之后,进一步激活它,然后在虚拟环境中运行不同程序, ...

  5. Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频

    目录 一.安装opencv 1.前置安装条件 2.安装环境 3.下载opencv3.4.11 4.解压安装包 5.开始安装 6.检查是否安装成功 二.显示图片和播放视频 1.显示图片 2.播放视频 三 ...

  6. ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案

    ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 参考文章: (1)ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 (2)ht ...

  7. python下载opencv库_Window系统下Python如何安装OpenCV库

    关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...

  8. python中安装opencv一直说不是内部或外部文件_Window系统下Python如何安装OpenCV库

    关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...

  9. Ubuntu系统下查看摄像头参数并基于OpenCV调用

    目录 1. 安装v4l-utils 2. 查找连接的摄像头列表 3. 查看各相机支持的分辨率.帧率.像素格式等参数 4. 注意事项 5. OpenCV(C++)调用摄像头代码 本博文描述了在Ubunt ...

最新文章

  1. html5知识点补充—hgroup元素的使用
  2. asp.net 发布程序到iis后无法连接到oralce数据库问题
  3. Python 21 Django 实用小案例1
  4. 【招聘(深圳)】轻岁 诚聘.NET Core开发
  5. 《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话...
  6. 多线程场景下利用ThreadLocal是线程安全?
  7. [转载] python中实现矩阵乘法
  8. EasyUI----增删改查
  9. Jersey 2.x 运行项目
  10. git操作本地仓库基本使用教程
  11. VMware虚拟机下载及安装教程
  12. 如何在通达信中展现漂亮的港资持股曲线
  13. mse 反编译_专业Delphi反编译工具(DeDeDark)
  14. 学习笔记(二)之字符常量和字符串常量
  15. 在ThinkPHP5.0打造一个专属短信接口
  16. vue + element 实现文件上传
  17. 9-java.sql.SQLException: Incorrect string value: ‘\xE9\x82\xA3\xE5\xB0\xB1‘ for column ‘content‘
  18. 苹果iOS开发者账号从零开始申请
  19. 13. Redis底层实现 List
  20. 黑暗逃生怎么修改服务器,《黑暗逃生》常见问题解决方法 游戏进不去怎么办...

热门文章

  1. 2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战
  2. MBTI在软件开发团队中的应用
  3. java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么_貂蝉大招画爱心的BGM歌曲介绍_咖绿茵手游站...
  4. 如何引入百度地图和获取精准获取经纬度坐标
  5. 论文检测平台不同查重结果差异大吗?
  6. 绿幕背景抠图,去除掉物体周围一圈的绿边 OpenCVForUnity
  7. 深入了解css中的grid布局
  8. 人体生物钟程序编制(C语言)
  9. ubuntu 安装confluence
  10. java中3|4_关于java:函数参数中3个点的含义是什么?