C#使用EmguCV播放视频

目录

一、前言

1、简介 

2、测试工程代码下载链接

3、EmguCV 库文件下载链接

二、工程环境配置

1、EmguCV控件添加引用

(1)窗口控件添加

 (2)相关Dll文件添加添加引用

(3)工程运行基础文件夹添加

 (4)调试运行

2、界面设计

(1)整体布局

 (2)设置Image相关属性

 3、添加相应控件事件程序

(1)全局变量

(2)打开影片

(3)播放和暂停


一、前言

1、简介 

 EmguCV是C#版本的OpenCV,EmguCV播放视频主要是将视频解析成一帧帧图像画面。每秒钟显示相对应的帧数画面,即可达到视频播放的效果。本质上是很短的时间显示足够多的图像,因此播放过程中没有影片声音。使用该方式播放视频的优势是可以对视频进行精确播放控制

 播放控制效果

2、测试工程代码下载链接

https://download.csdn.net/download/panjinliang066333/88167836

3、EmguCV 库文件下载链接

https://download.csdn.net/download/panjinliang066333/85711171

二、工程环境配置

1、EmguCV控件添加引用

创建C# Winform工程

(1)窗口控件添加

工具箱中添加EmguCV选项卡,向EmguCV中添加EmguCV.UI控件

 向窗口中添加EmguCV->ImageBox控件,控件背景颜色设置为黑色

 (2)相关Dll文件添加添加引用

(3)工程运行基础文件夹添加

将库文件中的X86文件夹复制到程序工程的Debug或者Release文件夹下。不管是X86系统还是X64系统,都要复制该X86文件夹。

 (4)调试运行

F5或者启动运行,无错误。

2、界面设计

(1)整体布局

 (2)设置Image相关属性

①设置ImageBox控件Enable为False,否则程序运行起来鼠标在控件上滚动会会对图像进行缩放

 ②设置ImageBox控件SizeMode为Zoom,即根据控件大小调整显示的图像对应的尺寸大小

 3、添加相应控件事件程序

(1)全局变量

        private MmTimer userTimer = new MmTimer();  //精确定时器Capture cap;int fps;                    //影片帧率int numFrames;              //影片总帧数int videoWidth;             //影片宽度int videoHeight;            //影片高度int currentFrame = 0;       //当前帧double setFrame = 0;        //定位到的帧bool isStart = false;       //是否播放

(2)打开影片

        private void btnOpenFile_Click(object sender, EventArgs e){try{//打开视频OpenFileDialog openFileDialog = new OpenFileDialog();openFileDialog.Filter = "MP4文件|*.mp4|AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";if (openFileDialog.ShowDialog() == DialogResult.OK){txtFileName.Text = openFileDialog.SafeFileName;////Application.Idle += Application_Idle;         //事件方式cap = new Capture(openFileDialog.FileName);     //读入视频//fps = (int)cap.GetCaptureProperty(CapProp.Fps);                     //获取视频帧率txtFps.Text = fps.ToString();numFrames = (int)cap.GetCaptureProperty(CapProp.FrameCount);        //获取视频总帧数txtFrameNums.Text = numFrames.ToString();videoWidth = (int)cap.GetCaptureProperty(CapProp.FrameWidth);       //获取视频宽度txtWidth.Text = videoWidth.ToString();videoHeight = (int)cap.GetCaptureProperty(CapProp.FrameHeight);     //获取视频高度txtHeight.Text = videoHeight.ToString();}}catch{MessageBox.Show("操作异常", "提示!!!");}}

(3)播放和暂停

        private void btnPlay_Click(object sender, EventArgs e){if (txtFileName.Text == ""){MessageBox.Show("请先打开视频");return;}if (btnPlay.Text == "播放"){isStart = true;btnPlay.Text = "暂停";//cap.SetCaptureProperty(CapProp.PosFrames, currentFrame);txtCurrentFrame.Text = currentFrame.ToString();   //当前播放的帧数Mat a = cap.QuerySmallFrame();imageBox1.Image = a;GC.Collect();PlayTimeSet();}else if (btnPlay.Text == "暂停"){isStart = false;btnPlay.Text = "播放";userTimer.Stop();}}

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

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

相关文章

CVS,SVN,Git,Mercurial 代码管理工具

现代软件开发过程中要实现高效的团队协作,需要使用代码分支管理工具实现代码的共享、追溯、回滚及维护等功能。目前流行的代码管理工具,包括 CVS,SVN,Git,Mercurial 等 CVS 和 SVN 是集中管理,Git 具有非常…

解决github打不开的方法

解决github打不开的方法 本文参考文章:解决可ping通但无法访问github网站的问题 一、确定域名github.com的ip地址 进入网址 IP/服务器github.com的信息 - 站长工具 (chinaz.com),查看 ip 地址。 20.205.243.166 github.com二、确定域名github.global.…

使用ubuntu-base制作根文件系统

1:ubuntu官网下载最小根文件系统: 放置到电脑的ubuntu中, Mkdir Ubuntu_rootfs Cd Ubuntu_rootfs Sudo tar –zxvf Ubuntu-bash-xxxxxx.tar.gz 2:电脑的ubuntu安装qemu搭建arm模拟系统 将/usr/bin/qemu-arm-static/(64位拷贝…

Milvus Cloud凭借AI原生,可视化优势荣登全球向量数据库性能排行榜VectorDBBench.com 榜首

在当今的大数据时代,随着人工智能技术的快速发展,向量数据库作为处理大规模数据的关键工具,其性能和效率越来越受到关注。最近,全球向量数据库性能排行榜 VectorDBBench.com 公布了一份最新的评估报告,引人瞩目的是,成立不到一年的新兴公司 Milvus Cloud 凭借其 AI 原生和…

LNMP及论坛搭建

安装 Nginx 服务 systemctl stop firewalld systemctl disable firewalld setenforce 0 1.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件。 yum -y install pcre-devel zlib-devel…

抖音seo源码开发源代码搭建分享

抖音SEO源码开发涉及到以下几个方面: 前端开发:包括抖音SEO页面的设计与布局,以及需要使用到的前端技术,如HTML、CSS、JavaScript等。 后端开发:包括抖音SEO页面的数据获取和处理,以及需要使用到的后端技术…

JavaScript数据结构与算法——栈

文章目录 一、初始栈结构1.1 特性1.2 注意事项 二、栈结构的封装2.1 封装简单栈结构2.2 利用栈将十进制转二进制 一、初始栈结构 1.1 特性 类似于汉诺塔,后进先出,每次只能操作栈顶的元素。关键词:压栈、退栈 简单示意图: 1.…

python-面向对象.多态

多态 多态 什么是多态: 定义时的类型和运行时的类型不一样,也就是定义时并不确定要调用的是 哪个方法, 只有运行的时候才能确定调用的是哪个 多态特性 多态性是指在不考虑实例类型的情况下使用实例, 多态性分为静态多态性和动态…

LLM - LLama 模型读取报错 TypeError: not a string

一.引言 读取 LLama2 模型时报错 TypeError: not a string 看异常栈是 AutoTokenizer.from_pretrained 时候的异常。 二.问题解决 出现类似加载模型异常的问题,大致分两类: ◆ 模型地址异常 脚本里传的 pretrained_model Path 有问题,加 …

Eureka 学习笔记5:InstanceRegistry

版本 awsVersion ‘1.11.277’ LeaseManager 接口管理实例的租约信息&#xff0c;提供以下功能&#xff1a; 注册实例取消注册实例实例续约剔除过期实例 public interface LeaseManager<T> {/** 注册实例并续约*/void register(T r, int leaseDuration, boolean isRep…

socket server服务器开发常见的并发模型

两种高效的事件处理模式 服务器程序通常需要处理三类事件&#xff1a;I/O 事件、信号及定时事件。有两种高效的事件处理模式&#xff1a;Reactor和 Proactor&#xff0c;同步 I/O 模型通常用于实现Reactor 模式&#xff0c;异步 I/O 模型通常用于实现 Proactor 模式。 无论是 …

【ASP.NET MVC】生成页面(6)

本应该继续数据库访问的问题进行探讨&#xff0c;前文确实比较LOW。但本人认为&#xff1a;初学者需要解决的是快速了解知识路线的问题&#xff0c;所谓“生存问题”&#xff0c;所以&#xff0c;干脆把流程先走完。 一、页面生成 下面这张图在前面已经介绍过&#xff1a; 前…

.Net6 Web Core API --- Autofac -- AOP

目录 一、AOP 封装 二、类拦截 案例 三、接口拦截器 案例 AOP拦截器 可开启 类拦截器 和 接口拦截器 类拦截器 --- 只有方法标注 virtual 标识才会启动 接口拦截器 --- 所有实现接口的方法都会启动 一、AOP 封装 // 在 Program.cs 配置 builder.AddAOPExt();//自定义 A…

探索PostgreSQL的新功能:最新版本更新解析

PostgreSQL作为一种强大而开源的关系型数据库管理系统&#xff0c;不断在不断进化和改进。每一次的版本更新都带来了更多功能和改进&#xff0c;让用户在处理大规模数据和复杂查询时体验更好的性能和功能。在本文中&#xff0c;我们将深入探索PostgreSQL的最新版本更新&#xf…

面向城乡公交的嵌入式系统远程升级设计方案

针对城乡公交站牌显示终端现场升级与维护困难的问题&#xff0c;提出了一种基于应用程序&#xff08;IAP&#xff09;技术的嵌入式系统远程升级设计方案。 通过IAP技术配合改良过的远程升级程序代替传统的现场烧写调试&#xff0c;节约了奔赴现场调试的时间和成本。 针对远程…

Gradle-02:问题Plugin with id ‘maven‘ not found

1. 背景 在一次使用 Gradle 构建自己项目&#xff0c;完事&#xff0c;需要上传到本地 Maven 仓库&#xff0c;因为事先并不清楚 apply plugin: maven 插件已经被 Gradle 移除&#xff0c;找了一圈&#xff0c;才找到解决方案。 2. 原因 apply plugin: maven def localRepo f…

Statefulset 实战 1

上一部分与大家分享到 Statefulset 与 RplicaSet 的区别&#xff0c;以及 Statefulset 的特点&#xff0c;能做的一些事情及一些注意事项 现在我们来尝试使用 Statefulset 来部署我们的应用&#xff0c;我们可以需要有应用程序&#xff0c;然后有持久化卷 开始使用 Statefuls…

Cocos creator(2d) 使用 shader + uv 实现单张图片衔接滚动效果

在游戏中&#xff0c;当我们需要让背景图片无缝衔接无限滚动时(打飞机这种背景一直滚动&#xff0c;或者肉鸽游戏地图一直在走等等)&#xff0c;通常的做法是 在游戏中放两个背景node&#xff0c;在update中控制这两张背景图片的移动&#xff0c;并让其收尾衔接即可。(具体代码…

奥威BI系统|秒分析,更适合分析大数据

根据以往的经验&#xff0c;当数据量多到一定程度就容易导致系统卡顿、崩溃。这种现象给企业级数据分析造成了极大的困扰。随着业务发展扩大和分析需求精细化&#xff0c;企业需要一套能秒分析大数据的系统。而奥威BI系统就是这样一款可以秒分析大数据的商业智能系统。 奥威BI…

考研408 | 【计算机网络】概述

计算机网络体系结构 计算机网络概述&#xff1a;1.概念&#xff0c;组成&#xff0c;功能&#xff0c;分类2.标准化工作及相关组织3.性能指标体系结构&参考模型&#xff1a;1.分层结构2.协议&#xff0c;接口&#xff0c;服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…