用OpenCV实现UVC视频分屏

news/2025/1/13 0:11:15/

分屏

  • Opencv
  • UVC
  • 代码
  • 验证
  • 后话

用OpenCV实现UVC摄像头的视频分屏。

Opencv

opencv里有很多视频图像的处理功能。

UVC

Usb 视频类,免驱动的。视频流格式有MJPG和YUY2。MJPG是RGB三色通道的。要对三通道进行分屏显示。

代码

import  cv2
import numpy as np
video = cv2.VideoCapture(0)
fps = video.get(cv2.CAP_PROP_FPS)
#print(fps)
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)), int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))
#print(size)while True:ret, frame = video.read()channel0 = np.copy(frame)channel0[:,:,1] = 0channel0[:,:,2] = 0channel1 = np.copy(frame)channel1[:,:,0] = 0channel1[:,:,2] = 0channel2 = np.copy(frame)channel2[:,:,0] = 0#修改一列的值channel2[:,:,1] = 0vs1 = np.hstack([frame,channel0])  # 水平堆叠vs2 = np.hstack([channel1,channel2])  # 水平堆叠imgs = np.vstack((vs1, vs2))  # 竖直堆叠cv2.namedWindow("split screen",cv2.WINDOW_NORMAL)cv2.imshow("split screen", imgs)c = cv2.waitKey(1)#每隔1毫秒刷新一次if c == 27:#ESCbreak
video.release()
cv2.destroyAllWindows()

验证

在这里插入图片描述视频流通道分屏的截屏

可以看到红色衣服在channel2红色通道里显示是清晰的。

后话

YUY2格式分屏。


http://www.ppmy.cn/news/1562642.html

相关文章

Euler 21.10(华为欧拉)安装oracle19c-RAC

1. Euler 21.10安装oracle19c-RAC 1.1. 环境规划 1.1.1. 主机规划 hostname IP 实例名 hfdb90 192.168.40.90 hfdb1 hfdb91 192.168.40.90 hfdb2 系统版本 BigCloud Enterprise Linux For Euler 21.10 (GNU/Linux 4.19.90-2107.6.0.0100.oe1.bclinux.x86_64 x86_6…

Rust语言使用iced实现简单GUI页面

使用cargo新建一个rust项目 cargo new gui_demo cd gui_demo 编辑Cargo.toml文件 ,添加iced依赖 [package] name "gui_demo" version "0.1.0" edition "2021"[dependencies] iced "0.4.2" 编辑src/main.rs文件: u…

【c++实战项目】负载均衡式在线OJ

主页:醋溜马桶圈-CSDN博客 专栏:实战项目_醋溜马桶圈的博客-CSDN博客 gitee:mnxcc (mnxcc) - Gitee.com项目源码文件版:OnlineJudge_file: 负载均衡在线OJ项目基于文件版本数据库版:mnxcc/OnlineJudge_MySQL 目录 1.项…

web服务器架构,websocket

一. 什么为前后端分离 在访问web应用时如果是先访问后端接口,然后通过后端进行转发到前端就是非前后端分离。如果是直接访问前端接口就是前后端分离的。 二. 非前后端分离架构 1. 前端html后端servlet 被tomcat服务器打包,统一指定根目录入口。通过原…

【HTML+CSS+JS+VUE】web前端教程-18-css引入方式

内联样式(行内样式) 要是用内联样式,你需要在相关的标签内使用样式style属性,style属性可以包含任何css属性 温馨提示 缺乏整体性和规划性,不利于维护,维护成本高 内部样式 当单个文档需要特殊的样式时,就应该使用内部样式表,你可以使用style标签在头部定义内部样式表…

代码随想录04

24. 两两交换链表中的节点 /** lc appleetcode.cn id142 langcpp** [142] 环形链表 II*/// lc codestart /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode(int x) : val(x), next(NULL) {}* };*/ class Soluti…

【Android】直接使用binder的transact来代替aidl接口

aidl提供了binder调用的封装,有的时候,比如: 1. 懒得使用aidl生成的接口文件(确实是懒,Android studio中aidl生成接口文件很方便) 2. 服务端的提供者只公开了部分接口出来,只给了调用编号和参…

限制图层列表

上节已经学习了如何使用ListLayers()函数获取图层列表.有时候并不需要地图文档中全部图层的列表,而仅仅需要图层的子集.ListLayers()函数可以限制返回的图层列表. 操作方法: 1.在arcmap中打开目标活动地图 2.单击arcmap标准工具条上的python按钮 3.导入arcpy.mapping模块. …