使用Emgu.CV将tif保存视频,并用AxWindowsMediaPlayer打开

embedded/2025/1/19 7:49:50/

1. 使用Emgu.CV将tif保存视频,非常简单

打开:

 VideoWriter   writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);

写入

 writer.Write(mat);

关闭

 writer.Dispose();

完整代码如下:


using Emgu.CV;
using System;
using System.Drawing;public class CVideoFiles{private VideoWriter writer;private bool isOpen = false;// 打开视频文件public void OpenVideo(string name, int displayRate, int width, int height){// 如果视频已经打开,抛出异常if (isOpen){throw new InvalidOperationException("视频文件已经打开,请关闭当前文件后再打开新的文件。");}// 打开视频文件并设置编码器,帧率,分辨率writer = new VideoWriter(name, VideoWriter.Fourcc('M', 'J', 'P', 'G'), displayRate, new Size(width, height), false);// 如果视频文件没有成功打开,抛出异常if (!writer.IsOpened){throw new InvalidOperationException("打开视频文件失败,请检查文件路径或编码器设置。");}isOpen = true;}// 写入一帧视频public void WriteVideo(Mat mat){if (!isOpen){throw new InvalidOperationException("视频尚未打开,无法写入视频帧。");}// 检查视频帧数据是否有效if (mat == null || mat.IsEmpty){throw new ArgumentException("无效的帧数据,无法写入视频。");}// 写入视频帧writer.Write(mat);}// 关闭视频文件public void CloseVideo(){if (isOpen){// 释放 VideoWriter 对象writer.Dispose();isOpen = false;}else{throw new InvalidOperationException("视频文件未打开,无法关闭。");}}}

2. 保存的avi视频,用AxWindowsMediaPlayer打开

   给AxWindowsMediaPlayer控制的URL 赋值,就会自动播放,如:

   axWindowsMediaPlayer1.URL = "c:\\1.avi";

如果AxWindowsMediaPlayer打不开,提示报错,说明MediaPlayer缺少解码器,  从   Download K-Lite Codec Pack (codecguide.com) 下载K-Lite_Codec_Pack_1865_Standard .exe,安装就可以了。


http://www.ppmy.cn/embedded/155166.html

相关文章

【2024年华为OD机试】(B卷,100分)- 数据分类 (Java JS PythonC/C++)

一、问题描述 题目描述 对一个数据a进行分类,分类方法为: 此数据a(四个字节大小)的四个字节相加对一个给定的值b取模,如果得到的结果小于一个给定的值c,则数据a为有效类型,其类型为取模的值&…

R语言绘图

多组火山图 数据准备&#xff1a; 将CSV文件同一在一个路径下&#xff0c;用代码合并 确保文件列名正确 library(fs) library(dplyr) library(tidyr) library(stringr) library(ggplot2) library(ggfun) library(ggrepel)# 获取文件列表 file_paths <- dir_ls(path &quo…

Redis 设计与实现:深入理解高性能缓存数据库

Redis 设计与实现&#xff1a;深入理解高性能缓存数据库 在当今数字化时代&#xff0c;数据处理和存储的高效性至关重要。Redis 作为一款广泛使用的高性能缓存数据库&#xff0c;以其出色的性能、丰富的数据结构和高可用性&#xff0c;成为众多开发者和企业的首选。在这篇文章…

Flutter(Dart)的集合类型List、Set 和 Map

在 Dart&#xff08;以及 Flutter&#xff09;中&#xff0c;List、Set 和 Map 是三种常用的集合类型&#xff0c;用于存储和管理多个数据项。每种类型都有其独特的特性和适用场景。下面将详细介绍这三种集合类型及其常用方法。 1. List (列表) List 是一种有序的集合&#x…

软硬件项目运维管理制度,安全运行维护管理手册(Word原件)

第一章 总则 第二章 运行维护组织架构 第一节 运行维护组织 第二节 职责分工 第三章 运行维护工作基本制度 第一节 故障管理 第二节 问题管理 第三节 变更管理 第四节 巡检管理 第五节 备份及日志管理 第六节 安全保密管理 运行维护管理的基本任务&#…

【华为路由/交换机的ftp文件操作】

华为路由/交换机的ftp文件操作 PC&#xff1a;10.0.1.1 R1&#xff1a;10.0.1.254 / 10.0.2.254 FTP&#xff1a;10.0.2.1 S1&#xff1a;无配置 在桌面创建FTP-Huawei文件夹&#xff0c;里面创建config/test.txt。 点击上图中的“启动”按钮。 然后ftp到server&#xff0c;…

Python学习(十三)什么是模块、模块的引入、自定义模块、常见的内置模块(math、random、os、sys、uuid、时间模块、加密模块)

目录 一、什么是模块&#xff1f;1.1 定义1.2 分类1.3 五种模块引入的方法1&#xff09;import 模块名&#xff08;全部引入&#xff09;2&#xff09;from 模块名 import 功能名&#xff08;部分引入&#xff09;3&#xff09;from 模块名 import *&#xff08;引入公共功能&a…

Ubuntu服务器折腾集

目录 Ubuntu 更改软件源Ubuntu 系统语言英文改中文windows 远程链接 Ubuntu 图形界面Windows 通过 openssh 连接 UbuntuUbuntu linux 文件权限Ubuntu 空闲硬盘挂载到 文件管理器的 other locationsUbuntu 开启 SMB 服务&#xff0c;并通过 windows 访问DockerseafileNextcloud…