C++PythonC# 三语言OpenCV从零开发(4):视频流读取
文章目录
- 相关链接
- 视频流读取
- C++
- CSharp
- Python
- 总结
相关链接
C++&Python&Csharp in OpenCV 专栏
【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料+课件笔记)
OpenCV 教程中文文档|OpenCV中文
OpenCV教程中文文档|W3Cschool
OpenCV基础教程——视频的读取与写入(超详细+附代码)
视频流读取
我之前写过一篇基于Python的,我现在重新写一次
Python+OpenCV 零基础学习笔记(4-5):计算机图形基础+Python相对文件路径+OpenCV图像+OpenCV视频
如果你想要一个简单的B站视频流下载器,这里推荐一个
哔哩下载姬downkyi_v1.6.1 下载

如果想获取视频流,B站上面随便搜一下就可以
卓特视觉视频素材 B站账号
于我何方 B站账号
比如我这里下载一个视频素材
【4K】群山无版权视频素材-6

C++
OpenCV基础教程——视频的读取与写入(超详细+附代码)
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main()
{VideoCapture video("D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4");//video.open("");auto isOpen = false;Mat frame;if (video.isOpened()) {//读取第一帧视频isOpen = video.read(frame);}else {cout<< "不存在此视频" << endl;}while (isOpen){ //不断的判断下一帧是否为空isOpen = video.read(frame);//如果为空则跳出循环if(frame.empty()){break;}imshow("C++", frame);int keyValue = waitKey(10);//27是ESC的ASCLL码,按下ESC退出if (keyValue == 27) {break;}}cout << "播放结束" << endl;//释放视频流video.release();//关闭所有窗口destroyAllWindows();return 0;
}



CSharp
internal class Program
{static void Main(string[] args){VideoCapture video = new("D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4");//video.open("");var isOpen = false;Mat frame = new Mat();if (video.IsOpened()){//读取第一帧视频isOpen = video.Read(frame);}else{Console.WriteLine("不存在此视频");}while (isOpen){//不断的判断下一帧是否为空isOpen = video.Read(frame);//如果为空则跳出循环if (frame.Empty()){break;}Cv2.ImShow("CSharp", frame);int keyValue =Cv2.WaitKey(10);//27是ESC的ASCLL码,按下ESC退出if (keyValue == 27){break;}}Console.WriteLine("播放结束");//释放视频流video.Release();//关闭所有窗口Cv2.DestroyAllWindows();}
}

Python
Python我们改改代码,试着输出一下灰度视频流
# %%
# 导入包
import cv2
import matplotlib.pyplot as plt
import numpy as np# 导入视频
input_video = {}
# 下载好的视频文件
input_video['vc'] = cv2.VideoCapture('D:/workSpace/OpenCV/HellOpenCV/Resources/video/test.mp4')
# 判断是否读取成功
if input_video['vc'].isOpened():# Python语法,元组读取input_video['open'] = input_video['vc'].read()
else:input_video['open'] = False# 循环帧读取,两个退出条件:视频播放完/输入'ESC'退出
while input_video['open']:open,frame = input_video['vc'].read()if frame is None:break;if open:# 我们先播放灰度图像gray = cv2.cvtColor(frame)# 打开一个名为result的窗口,播放帧cv2.imshow('result',gray)# 这个是特殊组合,waiteKey指每帧的时间,输入'esc'退出视频播放if cv2.waitKey(10) & 0xff == 27:break;# 释放视频输入流
input_video['vc'].release();
# 关闭所有窗口
cv2.destroyAllWindows();

这里图像显示有点问题,分辨率不对。我后面有空去网上找找解决方案
总结
详细的可以看这个博客,介绍的比较全面
OpenCV基础教程——视频的读取与写入(超详细+附代码)
经过这次代码书写,我发现确实,算子基本差不多,尤其是C++和Csharp,跑通了C++,Csharp也差不多就通了。Python简化的比较多,大致上也是调用算子。
相关文章:
C++PythonC# 三语言OpenCV从零开发(4):视频流读取
文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料课件笔记) OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…...
vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮,取消按钮,及点击遮罩层关闭 实现效果: 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…...
Oracle 日常健康脚本
文章目录 摘要常用脚本 摘要 保持 Oracle 数据库的良好健康状况对于系统的可靠性和性能至关重要。本文将介绍一些常用的 Oracle 日常健康脚本,帮助您监控数据库并及时识别潜在的问题,以保证数据库的稳定运行。 常用脚本 1.查询数据库实例和实例级别的…...
leetcode670最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 108] int maximumSwap(int num) {…...
XML 注入漏洞原理以及修复方法
漏洞名称:XML注入 漏洞描述:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具 有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XM…...
x-cmd pkg | dasel - JSON、YAML、TOML、XML、CSV 数据的查询和修改工具
目录 简介首次用户快速实验指南基本功能性能特点竞品进一步探索 简介 dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。 支持 JSON,YAML,TOML&…...
Oracle 19c RAC集群管理 ---------关键参数以及常用命令
Oracle 19c RAC集群管理 ---------关键参数 Oracle 19C RAC 参数最佳实践 --开启强制归档 ALTER DATABASE FORCE LOGGING; --设置 30分钟 强制归档 ALTER SYSTEM SET ARCHIVE_LAG_TARGET1800 SCOPEBOTH SID*; --设置期望undo保持时间3h ALTER SYSTEM SET UNDO_RETENTION21600…...
时限挑战——深度解析Pytest插件 pytest-timeout
在软件开发中,测试用例的执行时间通常是一个关键考虑因素。Pytest插件 pytest-timeout 提供了一个强大的插件,允许你设置测试用例的超时时间。本文将深入介绍 pytest-timeout 插件的基本用法和实际案例,助你精确掌控测试用例的执行时限。 什么…...
Java入门篇:打造你的Java开发环境——从零开始配置IDEA与Eclipse
引言 “工欲善其事,必先利其器” 作为每一位Java初学者的必经之路,搭建合适的开发环境是至关重要的第一步。本篇将详细指导你如何安装并配置两大主流Java开发工具——IntelliJ IDEA和Eclipse,助你在编程之旅上迈出坚实的第一步。 一、Java开发环境准备 1. 下载并安装Java D…...
文本批量处理大师:简化文本处理,释放无限生产力!
在数字化时代,我们每天都要处理大量的文本数据,无论是办公文档、网页内容还是社交媒体帖子。然而,面对海量的信息,传统的一键式操作已经无法满足我们的需求。我们需要一个更高效、更智能的工具来提升我们的工作效率。今天…...
Go 方法
第 1 章 方法 Go 语言也支持面向对象的思想;所谓面向对象编程:1对象就是简单的一个值或者变量,并且拥有其方法2方法是某种特定类型的函数3 面向对象编程就是使用方法来描述每个数据结构的属性和操作; 使用者不需要了解对象本身的…...
深度学习与大数据在自然语言处理中的应用与进展
引言 在当今社会,深度学习和大数据技术的快速发展为自然语言处理(NLP)领域带来了显著的进步。这种技术能够使计算机更好地理解和生成人类语言,从而推动了搜索引擎、语音助手、机器翻译等领域的创新和改进。 NLP的发展与技术进步…...
GPT4+Python近红外光谱数据分析及机器学习与深度学习建模
详情点击链接:GPT4Python近红外光谱数据分析及机器学习与深度学习建模 第一:GPT4 1、ChatGPT(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验 3、GPT-4与GPT-3.5的区别,以及与国内大语言模…...
Java项目:12 Springboot的垃圾回收管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类…...
HarmonyOS自定义弹出对话框CustomDialog并传递变量
HarmonyOS定义了一系列弹窗反馈类的组件 和前端开发框架VUE3配套生态库element plus中的提供各种组件相比,还是要少一些。可能是手机端操作和PC端操作的差异导致的 如果内置的弹窗不满足要求,可以基于CustomDialog自定义出各种个性化的反馈组件。 首先新建一个ets文件,…...
React16源码: React中的renderRoot的错误处理的源码实现
renderRoot的错误处理 1 )概述 在 completeWork这个方法之后, 再次回到 renderRoot 里面在 renderRoot 里面执行了 workLoop, 之后,对 workLoop 使用了try catch如果在里面有任何一个节点在更新的过程当中 throw Error 都会被catch到catch到之后就是错误…...
强化学习:MuJoCo机器人强化学习仿真入门(1)
声明:我们跳过mujoco环境的搭建,搭建环境不难,可自行百度 下面开始进入正题(需要有一定的python基础与xml基础): 下面进入到建立机器人模型的部分: 需要先介绍URDF模型文件和导出MJCF格式 介绍完…...
8.Gateway服务网关
3.Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…...
JVM篇----第四篇
系列文章目录 文章目录 系列文章目录前言一、虚拟机栈(线程私有)二、本地方法区(线程私有)三、你能保证 GC 执行吗?四、怎么获取 Java 程序使用的内存?堆使用的百分比?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到…...
WPF引用halcon的HSmartWindowControlWPF控件一加上Name属性就,无缘无故运行后报错
报错内容: 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MC1000 未知的生成错误“Could not find assembly System.Drawing.Common, Version0.0.0.0, Cultureneutral, PublicKeyTokencc7b13ffcd2ddd51. Either explicitly load this assembly using a method …...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
毫米波雷达基础理论(3D+4D)
3D、4D毫米波雷达基础知识及厂商选型 PreView : https://mp.weixin.qq.com/s/bQkju4r6med7I3TBGJI_bQ 1. FMCW毫米波雷达基础知识 主要参考博文: 一文入门汽车毫米波雷达基本原理 :https://mp.weixin.qq.com/s/_EN7A5lKcz2Eh8dLnjE19w 毫米波雷达基础…...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
