首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MATLAB中得到表示视频帧的矩阵?

如何在MATLAB中得到表示视频帧的矩阵?
EN

Stack Overflow用户
提问于 2011-03-17 14:35:24
回答 3查看 4.6K关注 0票数 0

我有个阿维视频文件。我想将这个视频中的一个帧表示为3个矩阵(因为颜色由3个数字(红色、绿色、蓝色或色调、饱和度、值或其他什么东西)参数化)。

目前我有这样的代码:

代码语言:javascript
复制
videoObject = mmreader(fname);
imageData = read(videoObject, [1 5])

因此,据我所知,我从视频中提取了前5帧。但是我不明白imageData是以什么格式给出的。例如,如何从位于行号17和列号32第三帧中获取像素颜色的绿色组件

有人能帮我吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-17 15:28:07

据我所知,它可以通过以下方式来完成。通过这种方式可以达到特定的框架:

代码语言:javascript
复制
% Take frame number 7:
imageData = read(videoObject, 7);

现在,如果我们想知道第1列和第2行像素的读、绿、蓝分量,我们需要这样做:

代码语言:javascript
复制
impixel(imageData,1,2)

它将返回3个数字(像素颜色的RGB分量)。

票数 2
EN

Stack Overflow用户

发布于 2011-03-17 19:18:59

从函数imageData返回的read格式是一个四维阵列,其中您的维度是(按顺序)帧高、帧宽、图像深度(对于RGB图像为3)和帧数。因此,要获得第三帧第17行和第32列中像素的绿色分量,只需执行以下操作:

代码语言:javascript
复制
greenValue = imageData(17,32,2,3);

一方面:mmreader将在未来的MATLAB版本中被删除,以支持VideoReader

票数 2
EN

Stack Overflow用户

发布于 2013-10-08 13:10:04

代码语言:javascript
复制
vidObj1 = mmreader('testballroom_0.avi');  %# Create a video file object
nFrames = vidObj1.NumberOfFrames;   %# Get the number of frames
vidHeight1 = vidObj1.Height;         %# Get the image height
vidWidth1 = vidObj1.Width;           %# Get the image width

%# Preallocate the structure array of movie frames:

mov1(1:nFrames) = struct('cdata',zeros(vidHeight1,vidWidth1,3,'uint8'),...
                    'colormap',[]);  %# Note that colormap is empty!

您可以从mov1访问框架:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5340511

复制
相关文章

相似问题

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