Ubuntu系统下python opencv视频采集:使用USB端口映射指定要读取的相机设备
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 文件
把下面这句话复制进去,其中 idVendor 和 idProduct 的值根据上一步中你设备的具体情况修改。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端口映射指定要读取的相机设备相关推荐
- 【嵌入式】在Ubuntu系统下通过OpenCV实现点阵汉字的字模读取与显示
介绍汉字点阵的原理,理解汉字的机内码.区位码编码规则和字形数据存储格式,通过OpenCV在Ubuntu系统下显示点阵汉字 一.汉字点阵原理 1.汉字点阵原理 1.点阵 2.汉字编码 3.点阵字库存储 ...
- 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/桌面/ ...
- Ubuntu系统下基于Opencv完成图像编程
文章目录 一.OpenCV简介 二.安装OpenCV 2.1 安装包下载 2.2 使用cmake安装 2.3 配置环境 三.使用实例 3.1 图片运用 3.2 视频运用 四.总结 五.参考文献 一.O ...
- Ubuntu系统下Python虚拟环境构建详解
在编程开发中,我们经常会利用不同版本的协助软件包,这样就导致一些软件不能兼容,为了解决这个问题呢,我们在儿引进Python虚拟环境,我们安装好虚拟环境之后,进一步激活它,然后在虚拟环境中运行不同程序, ...
- Ubuntu系统下安装opencv3.x并打开图片和视频文件以及打开摄像头录制视频
目录 一.安装opencv 1.前置安装条件 2.安装环境 3.下载opencv3.4.11 4.解压安装包 5.开始安装 6.检查是否安装成功 二.显示图片和播放视频 1.显示图片 2.播放视频 三 ...
- ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案
ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 参考文章: (1)ubuntu系统下用kazam软件录制的视频不能在windows系统下播放的解决方案 (2)ht ...
- python下载opencv库_Window系统下Python如何安装OpenCV库
关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...
- python中安装opencv一直说不是内部或外部文件_Window系统下Python如何安装OpenCV库
关于OpenCV简介 OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...
- Ubuntu系统下查看摄像头参数并基于OpenCV调用
目录 1. 安装v4l-utils 2. 查找连接的摄像头列表 3. 查看各相机支持的分辨率.帧率.像素格式等参数 4. 注意事项 5. OpenCV(C++)调用摄像头代码 本博文描述了在Ubunt ...
最新文章
- html5知识点补充—hgroup元素的使用
- asp.net 发布程序到iis后无法连接到oralce数据库问题
- Python 21 Django 实用小案例1
- 【招聘(深圳)】轻岁 诚聘.NET Core开发
- 《BI那点儿事》运用标准计分和离差——分析三国超一流统帅综合实力排名 绝对客观,数据说话...
- 多线程场景下利用ThreadLocal是线程安全?
- [转载] python中实现矩阵乘法
- EasyUI----增删改查
- Jersey 2.x 运行项目
- git操作本地仓库基本使用教程
- VMware虚拟机下载及安装教程
- 如何在通达信中展现漂亮的港资持股曲线
- mse 反编译_专业Delphi反编译工具(DeDeDark)
- 学习笔记(二)之字符常量和字符串常量
- 在ThinkPHP5.0打造一个专属短信接口
- vue + element 实现文件上传
- 9-java.sql.SQLException: Incorrect string value: ‘\xE9\x82\xA3\xE5\xB0\xB1‘ for column ‘content‘
- 苹果iOS开发者账号从零开始申请
- 13. Redis底层实现 List
- 黑暗逃生怎么修改服务器,《黑暗逃生》常见问题解决方法 游戏进不去怎么办...
热门文章
- 2023ACP世界大赛教育者论坛:让职业教育直面AI机遇与挑战
- MBTI在软件开发团队中的应用
- java 画爱心壮那首歌最,抖音貂蝉大招画爱心的背景音乐是什么_貂蝉大招画爱心的BGM歌曲介绍_咖绿茵手游站...
- 如何引入百度地图和获取精准获取经纬度坐标
- 论文检测平台不同查重结果差异大吗?
- 绿幕背景抠图,去除掉物体周围一圈的绿边 OpenCVForUnity
- 深入了解css中的grid布局
- 人体生物钟程序编制(C语言)
- ubuntu 安装confluence
- java中3|4_关于java:函数参数中3个点的含义是什么?