Matlib 关于视屏处理的方法
来源:互联网 发布:2017年快餐行业数据 编辑:程序博客网 时间:2024/05/20 00:14
一、将视频直接转换为3个张量的mat文件
video23DMat.m
%读取视频文件,转换为3维的矩阵 %读取视频文件,不再需要用aviread,因为aviread很多压缩格式不支持,推荐使用VideoReader类xyloObj = VideoReader('C:\Users\bymin\Desktop\2017D\OMoGMF_code\highway_5s.avi');%获取视频信息(帧数,高度,宽度)nFrames = xyloObj.NumberOfFrames;vidHeight = xyloObj.Height;vidWidth = xyloObj.Width;% 先随机生成一个2维矩阵,double类型的 X=rand(vidHeight, vidWidth);%或者使用zeros函数,比较节省内存: data=zeros(vidHeight, vidWidth,'uint8');% 读取第k帧,转化为灰度图像,扩展为三维数组for k = 1 : nFrames imgdata=read(xyloObj,k); graydata=rgb2gray(imgdata); X(:,:,k)=graydata;end%这样将一个图像大小为row*col,帧数为m的视频文件就生成了 row*col*m的三维数组。%在工作空间中,另存为mat数据文件即可。%也可以直接调用save函数:save(nfilename,'data');
二、重命名该文件夹下的所有文件
注意:代码要和文件图片放在同一路径下
imgRename.m
%重命名文件下的的所有文件 folder = 'C:\Users\bymin\Desktop\2017D\2-video\NoWaggleStaBG\highway\input150\'; files = dir([folder '*.jpg']); for i = 1 : numel(files) oldname = files(i).name; I = imread(oldname); %[pathstr, name, ext] = fileparts(oldname) ;% if i<10% newname = strcat('000',num2str(i),'.jpg');% imwrite(I,newname,'jpg');% elseif i>=10% newname = strcat('00',num2str(i),'.jpg');% imwrite(I,newname,'jpg');% % end newname = strcat(num2str(i),'.jpg'); imwrite(I,newname,'jpg'); end
三、将所有单帧图片合成为视频
img2video.m
%将所有单帧图片转换为视频DIR='C:\Users\bymin\Desktop\2017D\2-video\NoWaggleStaBG\highway\input150\'; %图片所在文件夹file=dir(strcat(DIR,'*.jpg')); %读取所有jpg文件filenum=size(file,1); %图片总数obj_gray = VideoWriter('highway_5s.avi'); %所转换成的视频名称writerFrames = filenum; %视频帧数%将单张图片存在avi文件open(obj_gray);for k = 1: writerFrames fname = strcat(DIR, num2str(k), '.jpg'); frame = imread(fname); writeVideo(obj_gray, frame);endclose(obj_gray);
四、将所有单帧图片转换为矩阵
img2mat.m
%将所有单帧图片转换为向量存储为mat文件clearclc%DIR='E:\MatlabCode\View2mat\campus5\'; %单帧图片所在文件夹DIR = 'C:\Users\bymin\Desktop\2017D\2-video\NoWaggleStaBG\highway\input150\'file=dir(strcat(DIR,'*.jpg')); %读取图片所在文件所有jpg文件filenum=size(file,1); %图片个数fname = strcat(DIR, num2str(1), '.jpg'); %第一张图片的文件名frame = imread(fname); %读取第一张图片rows = size(frame(:),1); %单张图片的总像素个数XX = zeros(rows, filenum); %将所有图片拉成矩阵时的维数%将所有图片存为一矩阵for k = 1: filenum fname = strcat(DIR, num2str(k), '.jpg'); frame = imread(fname); x = frame(:); XX(:, k) = x; %writeVideo(obj_gray, frame);end%将视频矩阵及其行列数存在obj对象obj.XX = uint8(XX);obj.siz = size(frame);%save campus5 obj %将obj对象存为mat文件save 5sMat obj
阅读全文
0 0
- Matlib 关于视屏处理的方法
- matlib的重要性
- MAtlib 的 cvAdaptiveThreshold 局部二值化
- 关于特殊符号的处理方法
- matlib不同界面之间的数据传递机制
- 关于Linux常见紧急情况的处理方法
- 关于php处理多选框checkbox的方法
- 关于时间问题的经典处理方法
- 关于时间格式的一些处理方法
- 关于Sessiont丢值的处理方法
- 关于SQLSERVER日志满的处理方法
- ibaitis 关于处理null值的方法
- 关于php处理多选框checkbox的方法
- 关于loading图标的处理方法
- MyBatis关于LIKE的处理方法
- 关于session过期跳转的处理方法
- 关于mobile中相机的处理方法
- 关于QMessageBox阻塞进程的处理方法
- C语言返回2个变量的方法
- ajax同步与异步的区别
- eclipse
- 对XML进行解释
- sql server 带有OUTPUT的INSERT,DELETE,UPDATE
- Matlib 关于视屏处理的方法
- UVa 732
- 1045. Favorite Color Stripe (30)
- Django数据库操作
- 最大值和最小值
- STM32的时钟系统RCC详细整理
- 例题6-17 看图写树(Undraw the Trees, UVa 10562)
- 201612-2CSP工资计算
- 51nod 1095 Anigram单词