我有个阿维视频文件。我想将这个视频中的一个帧表示为3个矩阵(因为颜色由3个数字(红色、绿色、蓝色或色调、饱和度、值或其他什么东西)参数化)。
目前我有这样的代码:
videoObject = mmreader(fname);
imageData = read(videoObject, [1 5])因此,据我所知,我从视频中提取了前5帧。但是我不明白imageData是以什么格式给出的。例如,如何从位于行号17和列号32的第三帧中获取像素颜色的绿色组件
有人能帮我吗?
发布于 2011-03-17 15:28:07
据我所知,它可以通过以下方式来完成。通过这种方式可以达到特定的框架:
% Take frame number 7:
imageData = read(videoObject, 7);现在,如果我们想知道第1列和第2行像素的读、绿、蓝分量,我们需要这样做:
impixel(imageData,1,2)它将返回3个数字(像素颜色的RGB分量)。
发布于 2011-03-17 19:18:59
从函数imageData返回的read格式是一个四维阵列,其中您的维度是(按顺序)帧高、帧宽、图像深度(对于RGB图像为3)和帧数。因此,要获得第三帧第17行和第32列中像素的绿色分量,只需执行以下操作:
greenValue = imageData(17,32,2,3);一方面:mmreader将在未来的MATLAB版本中被删除,以支持VideoReader。
发布于 2013-10-08 13:10:04
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访问框架:)
https://stackoverflow.com/questions/5340511
复制相似问题