测试C#调用Emgucv读取并显示视频文件

  微信公众号“CSharp编程大全”的文章《C# 视频播放》介绍了基于emgucv读取视频文件并播放的用法(百度文章名没有找到对象的文章地址,有兴趣的可以在微信中搜索该公众号并查看文章具体内容),本文学习并测试Emgucv播放视频文件的基本方式。
  Emgucv类似OpenCVSharp,也是基于.net封装的Open CV图形处理库,能够在Windows、Linux、Mac OS、iOS、Android等平台中调用OpenCV函数。
  新建Winform项目,在Nuget包管理器中搜索并安装以下包,其中Emgu.CV和Emgu.CV.runtime.windows为正常调用所需包,如果需要将Emgucv从视频文件中提取的图片对象转换为System.Drawing中的Bitmap对象,则需额外安装Emgu.CV.Bitmap,其需要依赖高版本的System.Drawing.Common包。

在这里插入图片描述

  Emgucv播放视频最重要的类为VideoCapture,支持读取本地文件或视频流,其构造函数如下所示:
在这里插入图片描述
  VideoCapture类中的重要函数如下所示:
在这里插入图片描述

  创建的.net core Winform项目的工具栏中并没有看到Emgucv相关的播放组件,结合本文开头提到的文章中的示例,基于Emgucv播放视频的基本思路主要是采用VideoCapture打开本地视频文件,设置类中ImageGrabbed事件的处理函数,在处理函数中调用Retrieve函数获取当前帧的图片后显示在窗口中。
在这里插入图片描述
  程序代码比较简单,在此不再列出代码,程序的运行效果如下所示:
在这里插入图片描述
  测试过程中发现的不足之处包括:1)由于是读取视频文件的帧并显示图片,在播放过程中只有图像没有声音;2)不清楚如何控制VideoCapture的视频文件帧读取速度,通过程序显示的视频速度比正常播放速度快得多。

参考文献:
[1]https://www.emgu.com/wiki/index.php/Main_Page
[2]https://github.com/emgucv/emgucv

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

拼多多关键字搜索API-通过关键字获取拼多多商品列表商品价格商品id商品链接

拼多多根据关键词取商品列表 API 返回值说明 item_search-根据关键词取商品列表 公共参数 请求地址: pinduoduo/item_search 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称&…

Mysql系列之命令行登录、连接工具登录、数据库表常用命令

登录与常用命令 连接工具登录命令行登录数据库1、查看数据库2、指定数据库3、查看当前数据库4、建库语句 数据表1、查看数据表2、查看表结构信息3、查看建表语句4、建表语句 连接工具登录 首先下载mysql连接工具,解压后直接打开软件,按以下步骤操作&…

☀️将大华摄像头画面接入Unity 【2】配置Unity接监控画面

一、前言 上一篇咱们将大华摄像头接入到电脑上了,接下来准备接入到unity画面。 接入到监控就涉及到各种视频流的格式rtsp、rtmp、m3u8。 Unity里有一些播放视频流的插件,主要的就是AVPro Video 和 UMP等,这次我用的是UMP 最好使用2.0.3版本…

顺序表详解(SeqList)

本文使用C语言进行顺序表的代码实现。 博主将使用代码和相关知识相结合的方式进行讲解,简单易懂,懵懂的大学生一听就会~ 顺序表是一种线性表的存储结构,它将数据元素存储在一段连续的存储空间中,每个元素占据一个存储单元&#x…

VSCODE中使用Django处理后端data和data models

链接: Python and Django tutorial in Visual Studio Code MVC的理解 在实际的程序中采用MVC的方式进行任务拆分。 Model(模型)负责封装应用程序的数据和业务逻辑部分。Model包含数据结构,数据处理逻辑以及相关的操作方法&#…

Camunda和SpringBoot的兼容版本

官网 https://docs.camunda.org/manual/7.15/user-guide/spring-boot-integration/version-compatibility/ Camunda和SpringBoot的兼容版本

安达发|APS生产排程的多机台产线详解

在生产管理中,APS(高级计划与排程)系统它可以帮助企业实现生产过程的优化和效率提升。特别是在多机台产线的生产环境中,APS系统的作用更加明显。本文将详细解析APS生产排程的多机台产线,包括允许使用的最大设备数&…

ai数字仿真辩论主持人提升用户体验

Ai虚拟主持人是元宇宙和AI人工智能技术在播音主持行业的重要应用,AI虚拟主持人能极大提升新闻资讯内容的精准度,改变单一的播报形式。 首先,AI虚拟主持人极大地提升了节目的制作效率和灵活性。传统主持人需要花费大量时间进行彩排和录制&…

【JGit】分支管理实践

本文紧接【JGit】简述及学习资料整理。 以下梳理了使用 JGit 进行 Git 操作的实践 JGit实践 主函数 public static void main(String[] args) throws Exception {String localDir "D:\\tmp\\git-test\\";String gitUrl "http://192.168.181.1:3000/root/g…

PFA容量瓶在半导体晶圆化学机械抛光中的用处是什么?

PFA容量瓶又称可溶性聚四氟乙烯容量瓶、特氟龙容量瓶容量瓶,有螺纹和插口两种可供选择,常用有10ml、25ml、50ml、100ml、250ml、500ml、1000ml规格 Teflon系列PFA容量瓶是一个透明的长颈瓶,瓶体为梨形,便于摇荡液体和刷洗。每一个…

Linux进程(一)信号-----信号产生

前言 在 Linux 中,进程具有独立性,进程在运行后可能 “放飞自我”,这是不利于管理的,于是需要一种约定俗成的方式来控制进程的运行,这就是 进程信号,本文将会从什么是进程信号开篇,讲述各种进程…

harmony 鸿蒙系统学习 安装ohpm报错 ohpm install failed

一. 安装配置 DevEco Studio 安装包时报错 execute ohpm install failed. Install task failed: ArkTS 3.2.12.5. Install ArkTS dependencies failed. 解决办法 找原因,首先,我的电脑中之前安装过node,也许是因为这个。(其实…

Redis之缓存雪崩问题解决方案

文章目录 一、书接上文二、介绍三、解决方案1. 锁2. 不同的过期时间3. 缓存预热和定时任务 一、书接上文 Redis之缓存穿透问题解决方案实践SpringBoot3Docker 二、介绍 缓存雪崩,指大量的缓存失效,大量的请求又同时落在数据库。主要的一种诱因是key设…

先进电机技术——步进电机与伺服电机

一、步进电机 步进电机是一种特殊类型的电动机,它的工作方式是将输入的电脉冲信号转换成精确的机械运动——通常是转子的角位移或直线移动。每接收到一个电脉冲信号,步进电机内部的定子绕组按顺序通电,产生磁场变化,使得与之相互…

企业级人脸美颜和美妆解决方案

视觉营销日益重要,而人脸美颜和美妆作为视觉营销的关键环节,更是受到了众多企业的关注。美摄科技,作为国内领先的人脸美颜和美妆解决方案提供商,以其先进的技术和卓越的产品,助力企业打造完美视觉体验,提升…

STM32引脚重定义问题

最近在搞资源管理,发现有些引脚不能用 比如这个PE引脚。我想用他输出PWM,但是不能用,我也重定义了,还是不能用。回去翻看了技术手册。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //重映射引脚功能,需…

Flutter自定义tabbar任意样式

场景描述 最近在使用遇到几组需要自定义的tabbar或者类似组件,在百度查询资料中通常,需要自定义 TabIndicator extends Decoration 比如上图中的带圆角的指示器这样实现 就很麻烦, 搜出来的相关也是在此之处上自己画,主要再遇…

2.20号qt

1.Qt中的信息调试类 &#xff08;输出类&#xff09; QDebug //1.类似与printf qDebug("%s","hello kittiy"); //2. 类似与cout 默认有换行 比较常用的方式 qDebug() << "你好" ; //1.类似与printf qDebug("%s",&q…

dubbo源码中设计模式——注册中心中工厂模式的应用

工厂模式的介绍 工厂模式提供了一种创建对象的方式&#xff0c;而无需指定要创建的具体类。 工厂模式属于创建型模式&#xff0c;它在创建对象时提供了一种封装机制&#xff0c;将实际创建对象的代码与使用代码分离。 应用场景&#xff1a;定义一个创建对象的接口&#xff0…

Kotlin基本语法 4 类

1.定义类 package classStudyclass Player {var name:String "jack"get() field.capitalize()set(value) {field value.trim()} }fun main() {val player Player()println(player.name)player.name " asdas "println(player.name)} 2.计算属性与防范…