首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MATLAB中剪切视频?

在MATLAB中剪切视频?
EN

Stack Overflow用户
提问于 2016-08-24 13:19:03
回答 2查看 5.6K关注 0票数 3

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-24 14:46:56

Matlab对于视频处理来说通常是可怕的。我建议使用通用的视频编辑器。如果您必须使用matlab,有两个工具箱在文件交换上,这将满足您的目的(在最一般格式的短视频,也需要图像工具箱)。

描述 使用电影编辑器你可以:-加载电影(只有avi‘s)-裁剪电影-把电影分割成不同的颜色层-旋转电影-保存电影为avi或mpg (感谢大卫·福蒂)--将独立的帧保存为bmp、jpg、png和tif --您可以使用幻灯片并在图像下面编辑文本(也许有人可以将其与Don Orofino的“交互式MATLAB电影播放器”结合起来)。也许你能加个函数?用户界面非常清楚。但问题是欢迎的。在压缩文件中添加了一个前后电影的示例。

票数 3
EN

Stack Overflow用户

发布于 2021-01-29 09:26:54

下面是我不久前为处理视频文件而编写的代码。在执行此文件之前,请将ROI1.m文件保存在路径中。

代码语言:javascript
复制
%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')
代码语言:javascript
复制
% 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中。要查看裁剪的帧,例如:

代码语言:javascript
复制
imshow(mycell_h{1,1})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39124490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档