我有20个类型为uint8
的灰度图像,存储在名为flow8
的1x20单元阵列中。我想从他们那里制作一部电影。我目前的做法是:
% Generate images.
for i = 1:20
flow8{i} = round(rand(100, 100)*255+1);
end
% Get into 4-D shape.
n = size(flow8,2);
matSize = size(flow8,1);
imageStack = reshape(cell2mat(flow8),matSize,[],n);
imageStack = permute(imageStack, [1 2 4 3]);
% Create movie.
mov = immovie(imageStack, gray)
implay(mov)
在这里,我添加了一个图像生成循环,以使代码可编辑。
使用此代码,生成的影片只包含一条水平线。
要获得合适的电影,我需要做什么?或者有更好的方法从我的图像制作电影吗?
我在Windows 7上使用MATLAB R2015b学术。
答案 0 :(得分:1)
如果仔细查看代码,{
"type": "motors",
"id": "1",
"attributes": {
"name": "V8",
"working": true
}
}
为flow8
。在进行重新整形时,使用以下代码计算1 x 20
matSize
那么,这个值是matSize = size(flow8, 1)
,因为正如我们所说的那样,单元格数组的形状是1
。
相反,您可能想要每个图像的大小。在这种情况下,您需要索引单元格数组以获取值,然后获取的大小。
1 x 20
这可能是另一种(更短)的方法,它使用matSize = size(flow8{1});
沿第四维连接。然后,您将避免所有cat
和reshape
操作。
permute