【MATLAB】读取视频,提取视频每一帧特征值并存成EXCEL,并保存个别图像
1、读取视频2、对视频尺寸进行预处理到4K3、分析每帧特征4、将每帧特征存储到Excel表格5、将特殊画面存进对应文件夹里clear;close all;clc;%初始化fileNamegrayscale.mp4;%视频名称filepathstrcat(./input/,fileName);objVideoReader(filepath);numFramesobj.NumFrames;% 帧的总数hobj.Width;vobj.Height;vh_th0.7;%169差异设置abs(h/v-16/9)vh_th不加黑框frame_UDzeros(2160,3840,3,uint8);YCbCrzeros(2160,3840,double);frame_Falgzeros(numFrames,4,double);APLzeros(1,1,double);savepathstrcat(./output/,fileName(1:end-4));if~exist(savepath,dir)savepath_statusmkdir(savepath);%如果路径不存在则新建一个endfork1:numFrames% 读取数据frameread(obj,k);%视频大小预处理ifabs(h/v-16/9)vh_th frame_UDimresize(frame,[2160,3840],bilinear);%16:9插值到4Kblack_add0;elseifhv frame_new_himresize(frame,[v,3840],bilinear);startfix((2160-v)/2);frame_UD(start:startv-1,:,:)frame_new_h;black_add(2160-v)*3840;elseframe_new_vimresize(frame,[2160,h],bilinear);startfix((3840-h)/2);frame_UD(:,start:starth-1,:)frame_new_v;black_add(3840-h)*2160;endend%APL generateYCbCr0.299*frame_UD(:,:,1)0.587*frame_UD(:,:,2)0.114*frame_UD(:,:,3);APLmean2(YCbCr)/255;%0~4pixel countifAPL0APL0.2Gray_range4;elseifAPL0.2APL0.4Gray_range5;elseifAPL0.4APL0.6Gray_range6;elseifAPL0.6APL0.8Gray_range8;elseifAPL0.8APL1Gray_range10;elseray_range10;endGray_cntfix(sum(sum(sum(frame_UDGray_range)))/3);ifGray_cnt(8295black_add)grayscale_gradient_Flag1;elsegrayscale_gradient_Flag0;endframe_Falg(k,1)k;frame_Falg(k,2)APL;frame_Falg(k,3)Gray_cnt;frame_Falg(k,4)grayscale_gradient_Flag;% imshow(frame_UD);%显示帧ifgrayscale_gradient_Flag1WritePathstrcat(./output/,fileName(1:end-4),/,num2str(k),.bmp);imwrite(frame_UD,WritePath);% 保存帧endendWritepath_excelstrcat(./output/,fileName(1:end-4),_analysis.xlsx);%方式1速度慢%Writdetail_excel {Frame num, APL, Gray count,grayscale_like };% for k1:numFrames% Writdetail_excel (k1,:){frame_Falg(k,1),frame_Falg(k,2),frame_Falg(k,3),frame_Falg(k,4)};% end%方式2矩阵操作加速Writdetail_excel(1,:){Frame num,APL,Gray count,grayscale_like};Writdetail_excel(2:numFrames1,:)num2cell(frame_Falg(:,:));writecell(Writdetail_excel,Writepath_excel);disp(Analysis Done!);