【MATLAB】读取视频,提取视频每一帧特征值并存成EXCEL,并保存个别图像

1、读取视频

2、对视频尺寸进行预处理到4K

3、分析每帧特征

4、将每帧特征存储到Excel表格

5、将特殊画面存进对应文件夹里

matlab 复制代码
clear ;close all;clc;

%初始化
fileName = 'grayscale.mp4'; %视频名称
filepath=strcat('./input/',fileName);
obj = VideoReader(filepath);
numFrames = obj.NumFrames;% 帧的总数
h=obj.Width;
v=obj.Height;

vh_th=0.7;%16:9差异设置,abs(h/v-16/9)<vh_th不加黑框

frame_UD=zeros(2160,3840,3,'uint8');
YCbCr=zeros(2160,3840,'double');
frame_Falg=zeros(numFrames,4,'double');
APL=zeros(1,1,'double');

savepath=strcat('./output/',fileName(1:end-4));
if ~exist(savepath, 'dir')
   savepath_status = mkdir(savepath);%如果路径不存在则新建一个
end


for k = 1 : numFrames% 读取数据
 
    frame = read(obj,k);
    %视频大小预处理
    if abs(h/v-16/9)<vh_th
        frame_UD=imresize(frame,[2160,3840],'bilinear');%16:9插值到4K
        black_add=0;
    else
        if h>v
            frame_new_h=imresize(frame,[v,3840],'bilinear');
            start=fix((2160-v)/2);
            frame_UD(start:start+v-1,:,:)=frame_new_h;
            black_add=(2160-v)*3840;

        else
            frame_new_v=imresize(frame,[2160,h],'bilinear');
            start=fix((3840-h)/2);
            frame_UD(:,start:start+h-1,:)=frame_new_v;
            black_add=(3840-h)*2160;
        end
    end

    %APL generate
    YCbCr=0.299*frame_UD(:,:,1)+0.587*frame_UD(:,:,2)+0.114*frame_UD(:,:,3);
    APL=mean2(YCbCr)/255;

    %0~4pixel count
    if APL>=0 && APL <0.2
        Gray_range=4;
    elseif APL>=0.2 && APL <0.4
        Gray_range=5;
    elseif APL>=0.4 && APL <0.6
        Gray_range=6;
    elseif APL>=0.6 && APL <0.8
        Gray_range=8;
    elseif APL>=0.8 && APL <=1
        Gray_range=10;
    else
        ray_range=10;
    end
    
    Gray_cnt=fix(sum(sum(sum(frame_UD < Gray_range)))/3);
   if  Gray_cnt>(8295+black_add)
       grayscale_gradient_Flag=1;
   else
       grayscale_gradient_Flag=0;
   end


 frame_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);%显示帧

 if grayscale_gradient_Flag==1
 WritePath=strcat('./output/',fileName(1:end-4),'/',num2str(k),'.bmp');  
 imwrite(frame_UD,WritePath);% 保存帧
 end

end


Writepath_excel=strcat('./output/',fileName(1:end-4),'_analysis.xlsx');
%方式1,速度慢
%Writdetail_excel = {'Frame num', 'APL', 'Gray count','grayscale_like' };
% for k=1:numFrames
% Writdetail_excel (k+1,:)={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:numFrames+1,:)=num2cell(frame_Falg(:,:));


writecell(Writdetail_excel,Writepath_excel);
disp('Analysis Done!');
相关推荐
wuyk55519 小时前
Spider-第09讲-三格式落盘CSV-Excel-JSON
爬虫·python·json·excel
zhanlang021719 小时前
HTML 零基础入门到企业实战【第五章 5.4】内嵌网页 iframe 标签:嵌入网页、视频、地图实战
前端·html·音视频
TengTaiTech19 小时前
头戴耳机做运动相机外接麦:一颗麦克风同时服务蓝牙通话与 3.5mm 录音的底层重构
数码相机·音视频·蓝牙·qcc
2301_790355972 天前
【技术拆解】短视频配音自动化流程:从文案预处理到 SRT 字幕的 9 个环节
自然语言处理·音视频
黎羽_2 天前
Excel 插图在手机端不显示/错位:完整排查手册
excel·openpyxl·移动端·办公文档
大飞哥软件自习室2 天前
视频批量截图并自动拼图是怎么做的:从四步向导、三种截帧模式到等距抽样与日志兜底的实现拆解,附 FFmpeg 调用与线程模型说明
ffmpeg·音视频·批量截图
用户298698530143 天前
React 前端实现 Excel 与 CSV 互转:基于 WebAssembly 的浏览器端方案
javascript·react.js·excel
Evand J3 天前
【MATLAB例程,PMSM19】永磁同步电机(PMSM)基于多速率无迹卡尔曼滤波(UKF)的转速与转子位置估计。测量缺失、状态预测与恢复性能分析
开发语言·matlab·电机·ekf·卡尔曼·电机滤波
Black蜡笔小新3 天前
消防控制室/配电房/中控室...视频汇聚平台EasyCVR岗位AI智能监测方案守住关键岗位
大数据·音视频·easycvr
FlightYe3 天前
音视频修炼之容器与协议(四):RTSP详解
android·linux·ffmpeg·音视频·dash