Kan*_*uly 3 matlab image-processing matlab-figure
我有一个基本的图形plot(),我使用getframe(gcf)和转换为图像frame2im.
plot(boundary(:,2),boundary(:,1),'r','LineWidth',2);
F = getframe(gcf);
[X, Map] = frame2im(F);
Run Code Online (Sandbox Code Playgroud)
imshow(X,Map)工作得很好,但是当我尝试申请其他与图像相关的功能,如flipud或rot90以XMATLAB说,图像必须是一个二维矩阵.
我怎么能这样做?
原因是因为你有一个多通道图像.它适用于"某些"图像,因为它们很可能是灰度图像,并且只是2D矩阵.如果您有3D矩阵(也称为多通道图像),这些方法将无法工作.如果您真的想使用flipud或者rot90,请考虑使用for循环迭代每个通道并自行翻转通道.
因此,根据您的图像X,执行以下操作:
Xout = [];
for i = 1 : size(X, 3)
Xout = cat(3, Xout, flipud(X(:,:,i))); %// or Xout = cat(3, Xout, rot90(X(:,:,i)));
end
Run Code Online (Sandbox Code Playgroud)
Xout 将包含您完全转换的图像.
FWIW:使用imrotate更清洁(丹尼尔的方法).我建议你改用它.
在你的代码,getframe并且frame2im将返回RGB数据的帧.因此,您的图像自然会是多渠道的:)