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简化的比较多,大致上也是调用算子。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/643310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入理解Linux wall命令:一键向所有用户发送消息(附实例详解和注意事项)

Linux wall命令介绍 wall 是一款命令行工具&#xff0c;主要用于在所有已登录用户的终端上显示消息。你可以直接输入消息或者通过文件传入。 Linux wall命令适用的Linux版本 wall命令在大多数Linux发行版&#xff08;如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、Red…

RabbitMQ 入门到精通

RabbitMQ入门到精通 一、了解RabbitMQ1.基础知识2.多种交换机模型详解 二、服务端搭建1.简单搭建2.信息持久化到容器外部 三、消息生产者和消费者1.消息生产者2.消息消费者3.RabbitTemplate 详解4.RabbitListener详解5.其他注解 四、如何保证消息可靠性1.发送方进行消息发送成功…

print会默认调用__str__方法吗

一、现象描述&#xff1a; 打印Mongodb自己生成的id&#xff1a; print(res[_id]) res[_id]输出&#xff1a; 659faa6670433c2c86986861 ObjectId(‘659faa6670433c2c86986861’) 二、为什么会不一样呢 在 MongoDB 中&#xff0c;_id 字段通常是一个 ObjectId 类型的实例。…

物联网中南向协议、北向协议是什么?南向协议、北向协议的区别

南向协议通常是用于管控其他厂商设备的数据接口&#xff0c;即向下对接的数据接口。 通过该协议&#xff0c;实现对底层设备上报信息的集中监控、统计&#xff0c;此外可让控制器利用南向协议的下行通道&#xff0c;对设备实现控制功能。 北向协议是借助控制模块向上层业务应用…

Go 虚拟环境管理工具 gvm 原理介绍与使用指南

本文谈下我对 Go 版本管理的一些想法。让后&#xff0c;我将介绍一个小工具&#xff0c;gvm。这个话题说起来也很简单&#xff0c;但如果想用的爽&#xff0c;还是要稍微梳理下。 背景介绍 Go 的版本管理&#xff0c;并非包的依赖管理&#xff0c;而且关于如何在不同的 Go 版…

探索未来:2024 年 5 大前沿生成式 AI 趋势

探索未来&#xff1a;2024 年 5 大前沿生成式 AI 趋势 1. 多模态 AI 模型的崛起2. 功能强大且强大的小型语言模型3. 自主代理的崛起4. 开源模型将与专有模型匹敌5. 云原生成为本地 GenAI 的关键总结 2023 年标志着技术发展的一个分水岭&#xff0c;生成式 AI 走入了主流。随着 …

牛客:X图形

描述 KiKi学习了循环&#xff0c;BoBo老师给他出了一系列打印图案的练习&#xff0c;该任务是打印用“*”组成的X形图案。 输入描述&#xff1a; 多组输入&#xff0c;一个整数&#xff08;2~20&#xff09;&#xff0c;表示输出的行数&#xff0c;也表示组成“X”的反斜线和…

浙政钉-H5小程序应用采集开发手册

浙政钉-H5&小程序应用采集开发手册 埋点代码分为:稳定性监控代码(Emas)和流量分析代码(A+)。稳定性监控代码(Emas)只需要在首页加入。流量分析代码(A+)每个页面都需要加入,但是可以写通用js,在其他页面引入。 适用范围 本文档适用于浙政钉业务web(H5)或小程序应…

GPT只是开始,Autonomous Agents即将到来

生成式AI虽然很早便已经引起了广泛关注&#xff0c;但直到ChatGPT的出现&#xff0c;许多公司的领导层才切身感受到了大语言模型&#xff08;LLM&#xff09;带来的深远影响。面临这种行业变革&#xff0c;诸多企业正争先恐后地加入到这场潮流中&#xff0c;但生成式AI的进步速…

【力扣 445】两数相加 II C++题解(链表+模拟+数学+头插法)

给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外&#xff0c;这两个数字都不会以零开头。 示例1&#xff1a; 输入&#xff1a;l1 [7,2,4,3], l2 [5,6,4]…

indexedDB的基本操作

indexedDB概述 IndexedDB 就是浏览器提供的本地数据库&#xff0c;它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据&#xff0c;提供查找接口&#xff0c;还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言&#xff0c;IndexedDB 不属于关系型数据库…

算法训练营Day55(子序列--编辑距离)

392.判断子序列 392. 判断子序列 - 力扣&#xff08;LeetCode&#xff09; 这道题目算是 编辑距离问题 的入门题目&#xff08;毕竟这里只是涉及到减法&#xff09;&#xff0c;慢慢的&#xff0c;后面就要来解决真正的编辑距离问题了 和最长公共子序列相似 他那道题区别就是e…

期待已久!阿里云容器服务 ACK AI 助手正式上线

作者&#xff1a;行疾 大模型技术的蓬勃发展持续引领 AI 出圈潮流&#xff0c;各行各业都在尝试采用 AI 工具实现智能增效。 2023 年云栖大会上&#xff0c;阿里云容器服务团队正式发布 ACK AI 助手&#xff0c;带来大模型增强智能诊断&#xff0c;帮助企业和开发者降低 K8s …

Spark运行架构以及容错机制

Spark运行架构以及容错机制 1. Spark的角色区分1.1 Driver1.2 Excuter 2. Spark-Cluster模式的任务提交流程2.1 Spark On Yarn的任务提交流程2.1.1 yarn相关概念2.1.2 任务提交流程 2.2 Spark On K8S的任务提交流程2.2.1 k8s相关概念2.2.2 任务提交流程 3. Spark-Cluster模式的…

BACnet网关BA100实现Modbus转BACnet,专为Modbus协议设备与BA系统的高效对接设计

随着物联网技术的迅猛发展&#xff0c;人们深刻认识到在智能化生产和生活中&#xff0c;实时、可靠、安全的数据传输至关重要。在此背景下&#xff0c;高性能的物联网数据传输解决方案——协议转换网关应运而生&#xff0c;广泛应用于工业自动化和数字化工厂应用环境中。 钡铼…

搜维尔科技:【简报】元宇宙数字人赛道,《莉思菱娜》

个性有些古灵精怪时儿安静时而吵闹&#xff0c;虽然以人类寿命来算已经200多岁但在 吸血鬼中还只是个小毛头&#xff0c;从中学开始喜欢打扮偏爱黑白灰色系的服装喜欢时 尚圈&#xff0c;立志想成为美妆或时尚网红不过目前还是学生&#xff0c;脸上的浅色血迹是纹身 贴纸&#…

深度学习-循环神经网络-RNN实现股价预测-LSTM自动生成文本

序列模型(Sequence Model) 基于文本内容及其前后信息进行预测 基于目标不同时刻状态进行预测 基于数据历史信息进行预测 序列模型:输入或者输出中包含有序列数据的模型 突出数据的前后序列关系 两大特点: 输入(输出)元素之间是具有顺序关系。不同的顺序,得到的结果应…

安全基础~通用漏洞1

文章目录 知识补充Acess数据库注入MySQL数据库PostgreSQL-高权限读写注入MSSQL-sa高权限读写执行注入Oracle 注入Mongodb 注入sqlmap基础命令 知识补充 order by的意义&#xff1a; union 操作符用于合并两个或多个 select语句的结果集。 union 内部的每个 select 语句必须拥有…

哈希--73. 矩阵置零/medium 理解度A

73. 矩阵置零 1、题目2、题目分析3、复杂度最优解代码示例4、适用场景 1、题目 给定一个 m x n 的矩阵&#xff0c;如果一个元素为 0 &#xff0c;则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,1,1],[1,0,1],[1,…

express 项目支持 typescript 实战

首先创建一个express项目 初始化项目 mkdir myapp cd myapp npm init (都用默认值)添加依赖包 npm install express nodemon修改 package.json {"name": "myapp","version": "1.0.0","description": "","…