open cv学习 (十一)视频处理
视频处理
demo1
import cv2
# 打开笔记本内置摄像头
capture = cv2.VideoCapture(0)
# 笔记本内置摄像头被打开
while capture.isOpened():# 从摄像头中实时读取视频retval, image = capture.read()# 在窗口中实时显示读取到的视频cv2.imshow("Video", image)# 等到用户按下键盘的时间为1mskey = cv2.waitKey(1)# 如果用户按下空格键if key == 32:breakcapture.release()
cv2.destroyAllWindows()
demo2
import cv2
# 打开笔记本内置摄像头
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 笔记本内置摄像头被打开
while capture.isOpened():# 从摄像头中实时读取视频retval, image = capture.read()image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 在窗口中实时显示读取到的视频cv2.imshow("Video", image_gray)# 等到用户按下键盘的时间为1mskey = cv2.waitKey(1)# 如果用户按下空格键if key == 32:breakcapture.release()
cv2.destroyAllWindows()
demo3
import cv2
# 打开笔记本内置摄像头
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 笔记本内置摄像头被打开
while capture.isOpened():# 从摄像头中实时读取视频retval, frame = capture.read()# 在窗口中实时显示读取到的视频cv2.imshow("Video", frame)# 等到用户按下键盘的时间为1mskey = cv2.waitKey(1)# 如果用户按下空格键if key == 32:capture.release()cv2.destroyWindow("Video")cv2.imwrite("./copy.png", frame)cv2.imshow("img", frame)break
cv2.destroyAllWindows()
demo4
import cv2
# 打开视频文件
video = cv2.VideoCapture("公司宣传.avi")while video.isOpened():# 读取视频retval, image = video.read()# 设置窗口cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 432, 300)if retval == True:cv2.imshow("Video", image)else:breakkey = cv2.waitKey(1)if key == 27:break
video.release()
cv2.destroyAllWindows()
demo5
import cv2
# 打开视频文件
video = cv2.VideoCapture("公司宣传.avi")while video.isOpened():# 读取视频retval, image = video.read()# 设置窗口cv2.namedWindow("Gray", 0)cv2.resizeWindow("Gray", 432, 300)if retval == True:img_Gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)cv2.imshow("Gray", img_Gray)else:breakkey = cv2.waitKey(1)if key == 27:break
video.release()
cv2.destroyAllWindows()
demo6
import cv2
# 打开视频文件
video = cv2.VideoCapture("公司宣传.avi")while video.isOpened():# 读取视频retval, image = video.read()# 设置窗口cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 420, 300)if retval == True:cv2.imshow("Video", image)else:breakkey = cv2.waitKey(50)if key == 32:cv2.waitKey(0)continueif key == 27:breakvideo.release()
cv2.destroyAllWindows()
demo7
import cv2
# 打开视频文件
video = cv2.VideoCapture("公司宣传.avi")
fps = video.get(cv2.CAP_PROP_FPS)
# 获取视频文件的帧数
frame_Count = video.get(cv2.CAP_PROP_FRAME_COUNT)
# 获取视频文件的帧宽度
frame_Width = int(video.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取视频文件的帧高度
frame_Height = int(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
print("帧速率:", fps)
print("帧数:", frame_Count)
print("帧宽度:", frame_Width)
print("帧高度:", frame_Height)
demo8
import cv2
# 打开视频文件
video = cv2.VideoCapture("output.avi")
fps = video.get(cv2.CAP_PROP_FPS)
frame_Num = 1
while video.isOpened():# 读取视频retval, frame = video.read()# 设置窗口cv2.namedWindow("Video", 0)cv2.resizeWindow("Video", 420, 300)if retval == True:cv2.putText(frame, "frame:" + str(frame_Num), (0, 100), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)cv2.putText(frame, "second:" + str(round(frame_Num/fps, 2)) + "s", (0, 200), cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255), 5)cv2.imshow("Video", frame)else:breakkey = cv2.waitKey(50)frame_Num+=1if key == 27:breakvideo.release()
cv2.destroyAllWindows()
demo9
import cv2
# 打开笔记本内置摄像头
capture = cv2.VideoCapture(0, cv2.CAP_DSHOW)
# 确定视频被保存的编码格式
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')# 创建VideoWriter类对象
output = cv2.VideoWriter("output.avi", fourcc, 20, (640, 480))while capture.isOpened():retval, frame = capture.read()if retval == True:output.write(frame)cv2.imshow("frame", frame)key = cv2.waitKey(1)if key == 27:break
capture.release()
output.release()
cv2.destroyAllWindows()
相关文章:
open cv学习 (十一)视频处理
视频处理 demo1 import cv2 # 打开笔记本内置摄像头 capture cv2.VideoCapture(0) # 笔记本内置摄像头被打开 while capture.isOpened():# 从摄像头中实时读取视频retval, image capture.read()# 在窗口中实时显示读取到的视频cv2.imshow("Video", image)# 等到用…...
函数栈帧理解
本文是从汇编角度来展示的函数调用,而且是在vs2013下根据调试展开的探究,其它平台在一些指令上会有点不同,指令不多,简单记忆一下即可,在我前些年的学习中,学的这几句汇编指令对我调试找错误起了不小的作用…...
【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析
【SA8295P 源码分析】70 - QAM8295P 原理图参考设计 之 DP、eDP 接口硬件原理分析 一、DP 接口(Display Port)介绍二、高通参考硬件原理图分析2.1 高通 Display 接口框图介绍2.2 DP接口 Pin 定义介绍2.3 高通参考设计:DP2、DP3 硬件原理图2.4 高通参考设计:eDP0、eDP1 硬件…...
【CSS动画02--卡片旋转3D】
CSS动画02--卡片旋转3D 介绍代码HTMLCSS css动画02--旋转卡片3D 介绍 当鼠标移动到中间的卡片上会有随着中间的Y轴进行360的旋转,以下是几张图片的介绍,上面是鄙人自己录得一个供大家参考的小视频🤭 代码 HTML <!DOCTYPE html>…...
数据结构<树和二叉树>顺序表存储二叉树实现堆排
✨Blog:🥰不会敲代码的小张:)🥰 🉑推荐专栏:C语言🤪、Cpp😶🌫️、数据结构初阶💀 💽座右铭:“記住,每一天都是一個新的開始…...
理解docker命令
基础命令 帮助命令 docker --help(帮助命令) 用于获取某个命令的帮助信息 #命令帮助 docker 命令 --help 小技巧 换行符 \ 使用命令换符,可以让繁杂命令变得有条理 #命令换行,使用换行符 \ docker ... \... \ 镜像命令 d…...
【SA8295P 源码分析】16 - QNX侧 TouchScreen Panel (TP)线程函数 tp_recv_thread 源码分析
【SA8295P 源码分析】16 - QNX侧 TouchScreen Panel (TP)线程函数 tp_recv_thread 源码分析 一、TP 线程函数:tp_recv_thread()二、处理&上报 坐标数据 cypress_read_touch_data()系列文章汇总见:《【SA8295P 源码分析】00 - 系列文章链接汇总》 本文链接:《【SA8295P…...
第九章MyBatis的技巧
${}和#{}的区别 #{}给sql语句的占位符传值${}直接将值拼接到sql语句上,存在sql注入的现象 什么时候用${} 需要先对sql语句拼接,然后再编译。 字符串排序字段向SQL语句中拼接表名。比如根据日期生成日志表 批量删除 delete from car where in(${ids}…...
计算机技术与软件专业技术资格(水平)考试----系统架构设计师
【原文链接】计算机技术与软件专业技术资格(水平)考试----系统架构设计师 考试简介 计算机软件资格考试是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试。计算机软件资格考试既是职业资格考试,又是职称资格考试。考试合格…...
使用nrm快速切换npm源以及解决Method Not Implemented
文章目录 什么是nrm如何使用nrm查看本机目前使用的npm 源安装nrm查看可选源查看当前使用源切换源添加源删除源测试源的响应时间 如果你遇到这个报错,就可以采用这种方案解决哦解决方案:1. 切换为官方源2. 查看漏洞3. 修复漏洞4. 下面命令慎重使用&#x…...
NVIDIA Jetson 项目:机器人足球比赛
推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 事实上,整个比赛都致力于这个想法。RoboCup小型联盟(SSL)视觉停电技术挑战赛鼓励团队“探索本地传感和处理,而不是非车载计算机和全球摄像机感知环境的…...
【论文解读】Hybrid-SORT: Weak Cues Matter for Online Multi-Object Tracking
因为Hybrid-SORT的baseline是基于OCSORT进行改进的,在这之前建议先了解byteTrack和【】的相关知识 1.介绍 1.1 基本框架 多目标跟踪(MOT)将问题分为两个子任务。第一个任务是检测每个帧中的对象。第二个任务是将它们在不同的框架中联系起来。关联任务主要通过显式…...
Microsoft 图像BERT,基于大规模图文数据的跨模态预训练
视觉语言任务是当今自然语言处理(NLP)和计算机视觉领域的热门话题。大多数现有方法都基于预训练模型,这些模型使用后期融合方法融合下游任务的多模态输入。然而,这种方法通常需要在训练期间进行特定的数据注释,并且对于…...
vue3+elementUI-plus实现select下拉框的虚拟滚动
网上查了几个方案,要不就是不兼容,要不就是不支持vue3, 最终找到一个合适的,并且已上线使用,需要修改一下样式: 代码如下: main.js里引用 import vue3-virtual-scroller/dist/vue3-virtual-scroller.css; …...
学C的第三十四天【程序环境和预处理】
相关代码gitee自取: C语言学习日记: 加油努力 (gitee.com) 接上期: 学C的第三十三天【C语言文件操作】_高高的胖子的博客-CSDN博客 1 . 程序的翻译环境和执行环境 在ANSI C(C语言标准)的任何一种实现中,存在两个不同的环境。 ࿰…...
微服务中间件--Ribbon负载均衡
Ribbon负载均衡 a.Ribbon负载均衡原理b.Ribbon负载均衡策略 (IRule)c.Ribbon的饥饿加载 a.Ribbon负载均衡原理 1.发起请求http://userservice/user/1,Ribbon拦截该请求 2.Ribbon通过EurekaServer拉取userservice 3.EurekaServer返回服务列表给Ribbon做负载均衡 …...
字符设备驱动实例(ADC驱动)
四、ADC驱动 ADC是将模拟信号转换为数字信号的转换器,在 Exynos4412 上有一个ADC,其主要的特性如下。 (1)量程为0~1.8V。 (2)精度有 10bit 和 12bit 可选。 (3)采样时钟最高为5MHz,转换速率最高为1MSPS (4)具有四路模拟输入,同一时…...
python基础5——正则、数据库操作
文章目录 一、数据库编程1.1 connect()函数1.2 命令参数1.3 常用语句 二、正则表达式2.1 匹配方式2.2 字符匹配2.3 数量匹配2.4 边界匹配2.5 分组匹配2.6 贪婪模式&非贪婪模式2.7 标志位 一、数据库编程 可以使用python脚本对数据库进行操作,比如获取数据库数据…...
SpringAOP原理:手写动态代理实现
0、基础知识 AOP我们知道,是在不修改源代码的情况下,为代码添加一些新功能的技术。通过动态代理,可以在不修改原始类代码的前提下,对方法进行拦截和增强。 动态代理常用于在不改变原有业务逻辑的情况下,对方法…...
【旅游度假】Axure酒店在线预订APP原型图 旅游度假子模块原型模板
作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:旅游度假,生活服务 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 本作品为「酒店在线预订」的移动端…...
高效解析快递地址:Java实现智能识别省市区与楼栋单元户室
1. 快递地址解析的痛点与Java解决方案 每天处理成千上万的快递地址是电商和物流企业最头疼的问题之一。我见过太多这样的场景:客服人员手动复制粘贴地址信息,运营团队熬夜整理Excel表格,配送系统因为地址格式混乱而频频出错。这些问题的根源都…...
ECharts Geo Regions 进阶:自定义地图省份边界与区域样式的实战技巧
1. 理解ECharts中的geo.regions属性 ECharts作为一款强大的数据可视化工具,其地图组件在展示地理信息数据时尤为出色。在实际项目中,我们经常需要对特定省份或区域进行个性化样式设置,这时候geo.regions属性就派上用场了。这个属性允许我们对…...
终极指南:Autoenv如何彻底解决团队开发环境配置难题
终极指南:Autoenv如何彻底解决团队开发环境配置难题 【免费下载链接】autoenv 项目地址: https://gitcode.com/gh_mirrors/aut/autoenv Autoenv是一款强大的目录环境管理工具,能够在您进入包含.env文件的目录时自动执行其中的环境配置࿰…...
戴尔Precision Pro商务笔记本回归,新一代产品聚焦便携性
看起来2026年是戴尔按下重启键的一年——在消费者和商用产品线中,戏剧性的品牌重塑都在被回归。有时候,老品牌确实是好品牌:熟悉的XPS名称和设计今年回归是有原因的,绝对不是因为戴尔Premium有正面的品牌认知度。在戴尔商务产品方…...
先瑞达2025年年报:营收同比增长20.7% 双引擎格局成型迎高质量增长
3月26日晚间,先瑞达医疗(6669.HK)正式发布截至2025年12月31日的年度业绩报告。报告期内,公司紧扣血管介入治疗领域核心赛道,以技术创新为内核、以全球化布局为抓手、以降本增效为支撑,实现经营业绩的稳健增…...
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取
NaViL-9B效果实测:支持中英文混排表格图像的行列结构识别与内容提取 1. 模型介绍 NaViL-9B是新一代原生多模态大语言模型,专为处理复杂视觉-语言任务设计。与常规视觉模型不同,它不仅能够理解图片内容,还能精准解析表格、文档等…...
手把手教你用4G Cat.1 bis开发智能硬件:从电路设计到低功耗优化的完整实战
4G Cat.1 bis智能硬件开发实战:从电路设计到低功耗优化的全流程指南 在共享充电宝扫码即用的便利背后,隐藏着一场关于低功耗通信的技术革命。当传统4G模块因高功耗让硬件开发者束手无策时,4G Cat.1 bis以单天线设计、10Mbps传输速率和μA级待…...
别再手动调坐标轴了!Excel两列数据一键生成折线图的正确姿势(附散点图对比)
Excel两列数据可视化:折线图与散点图的精准选择与高效操作 每次月度汇报前,你是否也经历过这样的场景?面对两列关键业务数据,明明只是简单画个趋势图,却在调整坐标轴上耗费半小时——选错图表类型导致横纵坐标错位&…...
给CUDA新手的3DGS代码导读:从forward.cu到backward.cu,一步步拆解渲染流程
给CUDA新手的3DGS代码导读:从forward.cu到backward.cu,一步步拆解渲染流程 第一次看到3D Gaussian Splatting(3DGS)的CUDA代码时,我盯着那些复杂的核函数和内存操作发了半小时呆。作为从PyTorch转型过来的研究者&#…...
Rock3A开发板实战:OpenBMC移植全记录(附避坑指南)
Rock3A开发板OpenBMC移植实战:从硬件适配到性能调优 当RK3568处理器遇上OpenBMC,会碰撞出怎样的火花?作为瑞芯微旗下性能与功耗平衡的明星芯片,RK3568在边缘计算领域已证明其价值。而将其应用于BMC(基板管理控制器&…...
