一、视频文件的读取及帧图像的保存

%% Get frames from video% Author: 羽墨志(https://yumozhi.com/)% Date  : 2022-06-01%% Introduction% 读取视频并保存视频帧图像到指定目录v_pathname = 'D:\Kevin\GitSyncdisk\Video\';
v_filename = 'map.mp4';
f_pathname = 'D:\Kevin\GitSyncdisk\Video\Frame\'; % 目录需要预先创建
f_filename = 'map_frame_'; % 图片文件名的前缀,可以根据自己喜好自行定义height = 480;
width = 640;v = VideoReader([v_pathname, v_filename]); % 方式一
% v = VideoReader(strcat(v_pathname, v_filename)); % 方式二
% v = VideoReader(sprintf('%s%s',v_pathname, v_filename)); % 方式三
% v = VideoReader('D:\Kevin\GitSyncdisk\Video\map.mp4'); % 方式四n_frame = 0;while hasFrame(v)frame = readFrame(v);gray_img = rgb2gray(frame); % 转换为灰阶图像gray_img = imresize(gray_img, [height, width], 'bilinear'); % 调整图像大小n_frame = n_frame + 1;% 方式一% imwrite(gray_img, [f_pathname, f_filename, num2str(n_frame), '.jpg']);% 方式二% imwrite(gray_img, strcat(f_pathname, f_filename, num2str(n_frame), '.jpg'));% 方式三imwrite(gray_img, sprintf('%s%s%d%s', f_pathname, f_filename, n_frame, '.jpg'));
end

二、字符串拼接的几种方式

待读取视频的目录结构比较简单,可直接手动拼接后写入,如方式四。有时候为了后续方便,也会根据实际需求将其合理的拆分为几个部分(本文中分为了目录和文件名两个部分),在根据需要进行拼接。对于从视频中读取到的视频帧而言,其数量一般较多,难以为每一幅图像手动构建一个名称后保存,所以需要通过动态拼接的方式生成一系列具有某种规律的文件名,这就意味着图像文件名中一定会包含某些变量,本文中展示了了三种动态拼接字符串的方式:

 % 方式一% imwrite(gray_img, [f_pathname, f_filename, num2str(n_frame), '.jpg']);% 方式二% imwrite(gray_img, strcat(f_pathname, f_filename, num2str(n_frame), '.jpg'));% 方式三imwrite(gray_img, sprintf('%s%s%d%s', f_pathname, f_filename, n_frame, '.jpg'));

其中n_frame即为文件名中包含的变量,与每一幅帧图像是一一对应的。在三种方式中,第三种方式更为灵活,可以添加格式控制来输出对应的数字字符串。例如将数字部分按照4位输出:

sprintf('%04d', var);

值得注意的是,当var的实际宽度大于前面的控制宽度时会按照实际宽度输出。

三、将帧图像转换为灰度图像

gray_img = rgb2gray(frame); % 转换为灰阶图像

四、调整图片的分辨率

本文中利用的是bilinear算法将图片调整到自己想要的大小。

gray_img = imresize(gray_img,[height,width],'bilinear'); % 调整图像大小

MATLAB | 读取视频并保存帧图像相关推荐

  1. 使用MATLAB读取视频并获取视频信息、分帧保存

    题外话:初学MATLAB,是因为跟着老师做项目,与MATLAB机器学习相关,包含了智能信息处理,是从前未接触的领域.因此,想写博客来记录自己的学习进度.老师安排的第一次任务为:用MATLAB读取视频, ...

  2. opencv读取视频并保存为图片

    1.功能: opencv读取指定文件夹中的视频文件,按照一定的间隔截取某些帧,将这些帧图像连续命名,存储在指定文件夹里. 2.代码如下: (1)IplImage #include <stdlib ...

  3. matlab读取视频VideoRead用法

    声明:转载自博主酌希的博文matlab读取视频VideoRead,原文链接点击打开链接,仅供参考学习. 看到以前matlab中读取视频多使用mmreader等(参考<matlab读取/播放视频的 ...

  4. matlab读取视频VideoReader类

     一个读取视频,显示帧,并保存每一帧 的代码 fileName = 'D:\\mc\\long.avi';  obj = VideoReader(fileName); numFrames = obj. ...

  5. matlab读取视频videoreader出错解决方法

    在用matlab读取视频取帧时遇到以下错误: 我所用的系统是win7,matlab2018a videoreader ERRorcreateing sourcereader reason:不知道的错误 ...

  6. python(二)进阶之cv2读取视频文件或摄像头,并进行保存帧图像或视频

    版本 # 4.5.1 python import cv2 cv2.__version__ 函数 # 参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径, # 例如: ...

  7. matlab播放 视频帧,MATLAB读取视频并按帧保存

    %存第k帧 clc; clear; video_file='D:pictures5.mp4';%读取视频位置 obj=VideoReader(video_file); frame_num=obj.Nu ...

  8. MATLAB读取视频并按帧保存

    %存第k帧 clc; clear; video_file='D:\pictures\5.mp4';%读取视频位置 obj=VideoReader(video_file); frame_num=obj. ...

  9. Matlab 保存视频每一帧图像

    clc; close all; clear all;obj = VideoReader('E:\示例图像\扭曲帧\mat文件\expdata_large.avi');%输入视频位置 numFrames ...

  10. 解决Python OpenCV 读取视频并抽帧出现error while decoding的问题

    解决Python OpenCV 读取视频抽帧出现error while decoding的问题 1. 问题 2. 解决 3. 源代码 参考 1. 问题 读取H264视频,抽帧视频并保存,报错如下: [ ...

最新文章

  1. 未能创建Microsoft Visual C# 2008 编译器 解决方案【轉】
  2. Acwing第 5 场周赛【未完结】
  3. win10任务管理器快捷键_win10系统任务管理器怎么打开
  4. 【渝粤教育】国家开放大学2018年春季 7397-21T家庭教育咨询与辅导 参考试题
  5. 前端使用正则表达式获取地址栏URL参数的值并将需要的参数值展示在页面
  6. LeetCode 7 Reverse Integer(反转数字)
  7. 五年级计算机教材内容,五年级计算机教学计划
  8. Windows10 Kafka Docker 集群搭建
  9. 腾讯IM可以实现聊天信息保存到本地服务器吗
  10. h5传奇 cqgmb.php,魔兽世界怀旧服狂暴战bwl最新WA字符串集合
  11. Android 开发之 fill_parent、wrap_content和match_parent的区别
  12. [译]Flask教程--Cookie
  13. 数字绘画技术,从数位板到数位屏
  14. F2FS之磁盘NAT和SIT布局及相关函数分析
  15. 离散数学总复习精华版(最全 最简单易懂)已完结
  16. FWT(快速沃尔什变换)
  17. html5 dreamlive,DREAM LIVE 5th Tour Stargazer即将开演
  18. 查看路由器地址是否是公网ip
  19. java 正则 提取数字_java使用正则提取字符串中的数字(例如提取短信中的验证码)详解...
  20. 17:Oriented R-CNN for Object Detection

热门文章

  1. win10安装Visual Studio 2019失败
  2. 华为云盘(华为云空间)免费空间
  3. 发生在我们身边的灵异事件 - 发生在台湾奇萊山的一些灵异事件
  4. 使用IIS 共享文件
  5. Tomcat任意文件读取 文件包含漏洞复现(CVE-2020-1938/CNVD-2020-10487)
  6. 《炬丰科技-半导体工艺》用于高效显示和通信的无磷白光 LED
  7. google离线地图制作
  8. 推箱子c语言代码有注释,C语言代码实现推箱子小游戏
  9. Excel 标记重复多余项
  10. [ffmpeg][goav][issues] goav Dictionary crash double free