视频转GIF动图MATLAB源码

2023-05-16


闲来无事,做一个视频转GIF的代码,整点花活,感觉自己做会很有意思。可以对原视频进行矩形截取。当然,实现的方式不唯一,此处的供借鉴使用。

话不多说,直接上代码。注释很详细,有问题可以评论留言~

%% ------------------------- 视频转GIF动图
% Made:在路上,正出发
% Date:2022 02 04
% Ref: MathWorks官网论坛
%  -----------------------------

%% 准备
clc;
clearvars;
close all;

movieName='C:\Users\XYB\Desktop\TEST.mp4';  %视频ID 视频格式必须为 VideoReader 函数所支持的格式
GIFfilename='C:\Users\XYB\Desktop\output.gif'; %GIF文件保存ID 每个人不同,需更改


%% GIF图片保存设置配置
isCrop=true;    %是否截取部分画面 ture(1)是,false(0)否
DelayTime=0;    %GIF每两幅图之间的延时,设为0时为原视频的播放速度
rate=2;         %视频保存为GIF的帧间隔,如设为3,则第1、4、7、10、……3*n+1 帧的图片被保存
Q=256;          % 用于最小方差量化的量化颜色数

%% GIF生成

vidObj = VideoReader(movieName);%创建视频对象

% -1- 选择视频截取区域
if isCrop==1
    frame = read(vidObj,1);%选择第一帧的图片作为截取的参考图,此处也可以改为第2、3帧等
    figure;
    imshow(frame);
    title('请选择要保存的区域')
    rect=getrect;%根据鼠标选择的矩形进行截取
    close all;   %清除图窗
    vidObj = VideoReader(movieName);%重置视频对象
end

% -2-循环转换GIF(逐帧截取、逐帧保存)
idx=1;
while (idx<=vidObj.NumFrames)%判断是还有帧数据可读
    
    if mod(idx,rate)==1%GIF的帧间隔控制
        im = read(vidObj,idx);%读取一帧
        if isCrop==1
            im=imcrop(im,rect);%截取之前所选中矩形框内的部分
        end
        [A,map] = rgb2ind(im,Q);%转换为索引图象,A中的元素为颜色的索引号,map为量化的颜色(RGB三色)
        % GIF保存 详见imwrite函数具体使用 ↓
        % https://www.mathworks.com/help/matlab/ref/imwrite.html?searchHighlight=imwrite&s_tid=srchtitle_imwrite_1
        if idx == 1
            imwrite(A,map,GIFfilename,'gif','LoopCount',Inf,'DelayTime',DelayTime)%GIF循环播放
        else
            imwrite(A,map,GIFfilename,'gif','WriteMode','append','DelayTime',DelayTime);
        end
        
    end
    idx=idx+1;
  
end

随意做的一个运行结果图:

效果图
效果图

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视频转GIF动图MATLAB源码 的相关文章

  • 在 MATLAB 中用两个值替换向量值

    我必须创建一个以向量作为输入的函数v和三个标量a b and c 该函数替换了的每个元素v等于a有一个二元素数组 b c 例如 给定v 1 2 3 4 and a 2 b 5 c 5 输出将是 out 1 5 5 3 4 我的第一次尝试是尝
  • 在 Matlab 中快速加载大块二进制文件

    我有一些相当大的 int16 格式的数据文件 256 个通道 大约 75 1 亿个样本 每个文件约 40 50 GB 左右 它以平面二进制格式编写 因此结构类似于 CH1S1 CH2S1 CH3S1 CH256S1 CH1S2 CH2S2
  • 为什么matlab的mldivide比dgels好这么多?

    Solve Ax b 真正的双 A是超定的 Mx2 其中 M gt gt 2 b是MX1 我运行了大量的数据mldivide 并且结果非常好 我用 MKL 写了一个 mex 例程LAPACKE dgels但它远没有那么好 结果有大量噪音 并
  • 在 Matlab 中显示有理数

    我有两个整数 m n 它们一起形成 m n 形式的有理数 现在我只想以这种理性的形式在 Matlab 中显示它们 我可以通过这样做来做到这一点 char sym m n 所以 如果 例如m 1 n 2 Matlab将显示1 2 然而 如果m
  • MATLAB 图中轴标签与轴之间的距离

    我正在使用 MATLAB 绘制一些数据 我想调整轴标签与轴本身之间的距离 但是 只需向标签的 位置 属性添加一点即可使标签移出图窗窗口 是否有 保证金 属性或类似的东西 在上图中 我想增加数字和标签 Time s 之间的距离 同时自动扩展数
  • 如何加载具有可变文件名的 .mat 文件?

    select all mat files oar dir oar mat n oar name loop through files for l 1 length oar load pat oar l lt this is the mat
  • 从 Java 运行 MATLAB 函数

    我在 MATLAB 中有一个 m 文件 我想从 Java 调用该文件 并以字符串或 Java 中的任何形式获取解决方案 这听起来很简单 但由于某种原因我无法让它发挥作用 我试过这个 matlab nosplash wait nodeskto
  • 从 imread 返回的 ndims

    我正在从文件夹中选取图像 尺寸为128 128 为此 我使用以下代码行 FileName PathName uigetfile jpg Select the Cover Image file fullfile PathName FileNa
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • MATLAB 可执行文件太慢

    我使用以下命令将 MATLAB 程序转换为基于控制台的应用程序deploytool在 MATLAB 中 MATLAB m文件执行大约需要 2 秒 但在我将其转换为可执行文件并调用 exe 执行需要45秒 太长了 我想将 MATLAB 程序与
  • Matlab颜色检测

    我试图一致地检测同一场景的图像之间的某种颜色 这个想法是根据颜色配置文件识别一组对象 因此 例如 如果给我一个带有绿色球的场景 并且我选择绿色作为我的调色板的一部分 我想要一个具有反映它检测到球的矩阵的函数 任何人都可以为这个项目推荐一些
  • 平衡两轮机器人而不使其向前/向后漂移

    我正在尝试设计一个控制器来平衡 2 轮机器人 约 13 公斤 并使其能够抵抗外力 例如 如果有人踢它 它不应该掉落 也不应该无限期地向前 向后漂移 我对大多数控制技术 LQR 滑模控制 PID 等 都很有经验 但我在网上看到大多数人使用 L
  • getappdata 在 MATLAB 中返回空矩阵

    我有一段代码 我在其中使用setappdata然后我使用以下方式调用数据getappdata即使它不为空 它也会返回一个空矩阵 我的一段简化代码如下 function edit1 Callback hObject eventdata han
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • Numpy 相当于 MATLAB 的 hist [重复]

    这个问题在这里已经有答案了 由于某种原因 Numpy 的 hist 总是返回比 MATLAB 的 hist 少 1 个 bin 例如在 MATLAB 中 x 1 2 2 2 1 4 4 2 3 3 3 3 Rep Val hist x un
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • matlab中更快的插值方法

    我正在使用 interp1 来插值一些数据 temp 4 30 4 rand 365 10 depth 1 10 dz 0 5 define new depth interval bthD min depth dz max depth ne
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • 如何在 MATLAB 编译的应用程序中运行外部 .m 代码? [复制]

    这个问题在这里已经有答案了 我有一个 MATLAB 项目 我使用 MCC 对其进行编译以获得单个可执行文件 然后我想知道外部程序员是否可以在 exe 中执行他的一些 m 文件 而无需重新编译整个项目 重点是提供一个应用程序 其他开发人员可以
  • MATLAB - 通过垂直连接子矩阵重新排列矩阵

    我在执行以下任务时遇到问题 假设一个 3x6 矩阵 A 0 2787 0 2948 0 4635 0 8388 0 0627 0 0435 0 6917 0 1185 0 3660 0 1867 0 2383 0 7577 0 6179 0

随机推荐

  • kali linux 安装Docker

    kali linux 安装docker zhaomeng 64 kali sudo apt get install docker docker compose 启动docker service docker start 报错如下 zhaom
  • Ubuntu20.04修改环境变量失误导致开机循环——解决方法以及如何保存profile

    gedit etc profile配置Ubuntu环境变量时出现失误导致开机时输入密码后重复开机无法进入图画界面 解决方法 xff1a ctrl 43 alt 43 F1 F6 xff0c 我的是ctrl 43 alt 43 F2进入界面
  • Ubuntu中代理设置

    当我们没有梯子的时候 xff0c 我们不需要任何代理 xff0c 直接在网络配置中选择禁止或者自动 xff0c 火狐浏览器也选择自动就好 xff0c 当我们使用梯子以后 xff0c 我们得看梯子的代理端口 xff0c 让电脑代理选择手动 x
  • CentOS8 图形界面和命令行切换

    1 查看目前默认的启动默认 systemctl get default 命令行模式 multi user target 图形界面模式 graphical target 2 设置为图形界面模式 systemctl set default gr
  • Java实现微信(主、子商户模式)及支付宝支付

    一 业务需求 实现APP微信 支付宝支付 xff0c 后端需要做生成预支付单 xff0c 响应支付结果 xff1b 微信商户采用子商户模式 二 参考官方文档 微信普通商户 xff1a https pay weixin qq com wiki
  • Java判断整数是否为回文数

    回文数 xff0c 是指一个数的正序 xff08 从左到右 xff09 与其倒序 xff08 从右到左 xff09 相等的数 核心思想是把这个整数倒过来 xff0c 再与这个数进行比较 xff0c 若相等 xff0c 则此数为回文数 xff
  • geoserver集群部署

    geoserver集群部署 环境准备系统准备软件准备插件准备配置jdk安装tomcat部署geoserver安装mqgeoserver配置jms修改tomcat 启动文件新建broker xml放入cluster文件内容如下 三个节点均要新
  • Mathtype闪退、未嵌入office系统问题解决方法

    由于操作系统的设置和之前安装过的东西的不同 xff0c 每个人在安装mathtype时遇到的问题可能也不同 xff0c 本篇文章解决了mathtype的闪退 没有自动嵌入office的问题 安装过后出现的问题 xff1a 一 安装破解版后打
  • 在树莓派上搭建MQTT服务器

    一 MQTT协议 实现MQTT协议需要客户端和服务器端通讯完成 xff0c 在通讯过程中 xff0c MQTT协议中有三种身份 xff1a 发布者 xff08 Publish xff09 代理 xff08 Broker xff09 xff0
  • 树莓派和arduino的串口通信

    一 树莓派环境安装 1 安装GPIO模块 wget https span class token punctuation span span class token operator span sourceforge span class
  • Wifi模块ESP8266-01的初始化和编程环境的搭建

    ESP8266 01引脚图 xff1a Vcc接的是3 3V xff01 一 烧写AT固件 使用烧录工具插进电脑 xff0c 打开固件烧写程序 xff0c 烧入厂家提供的固件 测试 xff1a 打开串口助手XCOM xff0c 插拔TTL转
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【二】烧录NodeMCU

    这里首先要设置好阿里云平台 xff0c 参见上一篇文章 代码可以从这里下载 1 添加esp8266板子 文件 首选项 附加开发板管理器网址 xff0c 输入 xff1a http arduino esp8266 com stable pac
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【三】利用阿里云进行可视化开发

    应用开发 aliyun com 新建 输入应用名称 如果没有项目就新建一个项目 然后就是像PPT一样制作网页 xff0c 其中数据源配置需要关联产品和设备 xff0c 如下图所示 制作好之后发布即可 xff0c 如果不绑定自己的域名则需要登
  • windows10 iis自带的ftp 在使用filezilla的时候提示 550

    windows10 iis自带的ftp 在使用filezilla的时候提示 550 检查防火墙检查IIS的授权规则设置 检查防火墙 检查防火墙对FTP的支持 点击左侧允许应用和功能通过防火墙 在FTP服务器右侧打勾 检查IIS的授权规则设置
  • 【linux】debian安装apache2并创建虚拟站点

    前言 教程将会讲解如何在debian系统上安装apache2并且在80端口部署多个网站 环境准备 1 本次使用的服务器为debian10 2 睿智头脑和一双手 教程步骤 1 更新apt 这里我就不放设置更新源头的了 xff0c 网上一搜一大
  • Springboot整合富文本编辑器wangEditor(上传文件到七牛云)

    背景 最近项目上要用到富文本编辑器 xff0c 开始想用Ueditor 发现需要配置的东西比较多 xff0c 折腾了好久没弄好 xff0c 后来发现wangEditor比较好整合 xff0c 又轻又好用 xff0c 能满足大多需求 xff0
  • Debian10 设置允许root登录

    root登录 因为Bebian默认不允许 root登录 xff0c 修改文件配置 修改gmd3的登录文件 编辑文件 span class token function nano span etc gdm3 daemon conf 修改内容
  • 1487:【例 2】北极通讯网络

    1487 xff1a 例 2 北极通讯网络 时间限制 1000 ms 内存限制 65536 KB 提交数 701 通过数 321 题目描述 原题来自 xff1a Waterloo University 2002 北极的某区域共有 n 座村庄
  • 虚拟机ubuntu18.04突然无法上网了(问题解决)

    问题描述 xff1a VMware虚拟机下Ubuntu18 04突然上不了网的问题 xff1a 如下图所示 xff1a 更改这里的三种连接方式都是这样 分析 xff1a IP冲突或者配置出了问题 xff0c 需重新更新设置 解决 xff1a
  • 视频转GIF动图MATLAB源码

    闲来无事 xff0c 做一个视频转GIF的代码 xff0c 整点花活 xff0c 感觉自己做会很有意思 可以对原视频进行矩形截取 当然 xff0c 实现的方式不唯一 xff0c 此处的供借鉴使用 话不多说 xff0c 直接上代码 注释很详细