matlab视频转换 函数

 函数1 把视频抽帧,并进行边缘检测,变成灰度图(帧)

function  tv2f(VideoPath,p01,p02)

%   tv2f  函数用于将视频转换为帧图(trans video to frames)
%         转换后的帧图进行了一次Robrets算子检测
%   VideoPath   原视频位置及名称
%   p01         原视频帧输出位置
%   p02         转换后帧输出位置

ov = VideoReader(VideoPath);
%-------------------------------------------------------------------------- 
                                                                            % 这部分用于把原视频的每一帧提取成图片
num = ov.NumFrames;
width=ov.width;
high=ov.Height;

for i  = 1:num
    frame  = read(ov,i);
    p1 = strcat(p01,num2str(i));                                      
    p1 = strcat(p1,'.jpg');
    imwrite(frame,p1);
    %----------------------------------------------------------------------
    k=i/num*100;                                                            % 在屏幕打印出当前进度(百分之……)
    k=strcat('进度1/2--',num2str(k));
    k=strcat(k,'%');
    clc
    disp(k);
    %----------------------------------------------------------------------
end

%-------------------------------------------------------------------------- 
                                                                             
                                                                            % 这部分将每张图片进行边值检测,图片变成灰度图
for i=1:num                                                                 
    k=i/num*100;
    k=strcat('进度2/2--',num2str(k));
    k=strcat(k,'%');
    clc
    disp(k);
    p1 = strcat(p01,num2str(i)); 
    p1 = strcat(p1,'.jpg');

    f = rgb2gray(imread(p1));

    realpoints = edge(f,'roberts');
    [m,n] = find(realpoints==1);
    tp = scatter(n,-m,'.');                                                   % tp,transed-picture
    axis([0 width -high 0]);

    p2 = strcat(p02,num2str(i));
    p2 = strcat(p2,'.jpg');

    saveas(tp,p2);

end   

end

函数2 把帧合成为视频

function f2v(path1,path2,rate,p1,p2)

% f2v 用于把帧图转换成视频(frames to video)
%
% p1    为帧图完整路径
% p2    为录制视频输出路径
% rate  录制视频帧率
% p1 p2 为录制视频启示帧与结束帧

videoName = path2; 
if(exist('videoName','file'))
    delete videoName
end

v=VideoWriter(videoName,'MPEG-4');
v.FrameRate=rate;
open(v);

for i=p1:p2
    filename = strcat(path1,num2str(i));
    filename = strcat(filename,'.jpg');    
    x = imread(filename);
    writeVideo(v,x);

end
close(v);
end

效果在妈妈从小就教育我,有人的地方就有Bad Apple_哔哩哔哩_bilibili

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值