在 MATLAB 中裁剪视频?

Posted

技术标签:

【中文标题】在 MATLAB 中裁剪视频?【英文标题】:Cropping a video in MATLAB? 【发布时间】:2016-08-24 13:19:03 【问题描述】:

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

【问题讨论】:

使用系统工具在MATLAB with ! 中使用它可能吗?要执行裁剪本身,这样的事情会有所帮助吗? - video.stackexchange.com/questions/4563/… 删除有答案的问题是非常糟糕的形式。请取消删除您刚刚删除的帖子,并向我们提供我们实际提供您想要的信息所需的信息。 【参考方案1】:

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

说明 使用电影编辑器,您可以: - 加载电影(仅限 avi) - 剪辑电影 - 裁剪电影 - 将电影分割成单独的颜色层 - 旋转电影 - 将电影保存为 avi 或 mpg(感谢 David Foti) - 将独立帧保存为 bmp、jpg、png 和 tif - 您可以随时使用图像下方的滑块和编辑文本浏览电影(也许有人可以将其与 Don Orofino 的“交互式 MATLAB 电影播放器​​”结合使用。 也许你可以添加一个功能?用户界面非常不言自明。但欢迎提问。之前和之后的电影示例已添加到 zip 文件中。

【讨论】:

我真的不希望得到这个答案,但你可能是对的。我不能使用其他程序,所以如果我能弄清楚的话,我只需要使用逐帧方法。谢谢 我同意。不要使用 MATLAB 编辑视频。使用专为您设计的专用解决方案,例如 Adob​​e After Effects。还有各种免费的解决方案,例如臭名昭​​著的ffmpeg。上面 cmets 流中 Divakar 的链接应该会有所帮助。【参考方案2】:

以下是我前段时间编写的用于处理视频文件的代码。在执行此文件之前,将 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_h1,1)

【讨论】:

以上是关于在 MATLAB 中裁剪视频?的主要内容,如果未能解决你的问题,请参考以下文章

在matlab中的图像中裁剪具有特定分辨率的图像

Matlab:从二值图像裁剪对象

如何仅使用for循环在matlab中裁剪图像? [复制]

怎么用matlab对图像进行裁剪

不使用内置函数进行图像裁剪的matlab代码

在 Python OpenCV 中制作裁剪帧的视频