在MATLAB中裁剪视频?

时间:2016-08-24 13:19:03

标签: matlab video

我需要在MATLAB中裁剪视频的特定区域以进行重播并保存为特定区域。目前我只知道一种方法来分离所有帧,裁剪它们,然后将它们作为视频重新组合在一起 - 是否有更简单的方法或工具在MATLAB中裁剪视频,或者我只是不得不依赖于帧逐帧裁剪?

2 个答案:

答案 0 :(得分:3)

Matlab对于视频处理来说通常很糟糕。我建议使用通用视频编辑器。如果您必须使用matlab,fileexchange上有几个工具箱可以满足您的需求(适用于最通用格式的短视频,还需要图像工具箱)。

  

描述
  使用Movie Editor,您可以:    - 加载电影(仅限avi)    - 剪切电影    - 播放电影    - 将电影拆分为单独的颜色层    - 旋转电影    - 将电影保存为avi或mpg(感谢David Foti)    - 将独立帧保存为bmp,jpg,png和tif    - 你总是可以使用图片下方的滑块和edittext漫步电影(也许有人可以将它与Don Orofino的'Interactive MATLAB Movie Player'结合起来。   也许你可以添加一个功能?用户界面非常明显。但欢迎提问。一个前电影和后电影的例子被添加到zip文件中。

答案 1 :(得分:0)

以下是我前段时间写的处理视频文件的代码。在执行此文件之前,将 ROI1.m 文件保存在路径中。

%frame by frame processing of video files
clear all;
close all;
clc;
mov=VideoReader('C:\Users\Syd_R\OneDrive\Desktop\entrap\holo_bright_10_MMStack_Pos0.ome.avi');
vidFrames=read(mov);
nFrames=mov.NumberOfFrames;

A=vidFrames(:,:,1);

for fr=1:nFrames
    
    set(0,'DefaultFigureVisible','off')
    elseX=vidFrames(:,:,fr); 
     
if exist('position')==0
ROI1
else
imshow(elseX)
I2 = imcrop(elseX,[position(:,1) position(:,2) position(:,3) position(:,4)]);
end


mycell_h(fr)={I2};

end

close all;
set(0,'DefaultFigureVisible','on')




% This file should be saved (as ROI1.m) in the same path as this file will be called while executing the main file

% ROI
if exist('A')==1;
figure, imshow(A);
h = imrect(gca,[10 10 512 512]); 
 position = wait(h); % returns coordinates in "position" when user doubleclicks on rectangle
figure, imshow(A)
I2=imcrop(A,position);
    phROI2=I2;
    figure(11);
    imshow(phROI2);
    imwrite(phROI2, 'roi', 'tiff')
end;


裁剪后的帧将保存在单元格 [mycell_h] 中。查看裁剪后的帧,例如:

imshow(mycell_h{1,1})