matlab imshow 多平面图像的输入项必须是大小为 MxNx3 的 RGB 图像,和imread读取路径以及特定路径修改

I = imread('smallcat.tif');
se = strel('ball',5,5)
se = strel('ball',5,5)
I2 = imdilate(I,se);%膨胀图像
subplot(1,2,1);
imshow(I);
xlabel('(a)原始图像');
subplot(1,2,2); 
imshow(I);
xlabel('(b)原始图像');

错误内容:

错误使用 images.internal.imageDisplayValidateParams>validateCData (第 118 行)
多平面图像的输入项必须是大小为 MxNx3 的 RGB 图像。

出错 images.internal.imageDisplayValidateParams (第 30 行)
common_args.CData = validateCData(common_args.CData,image_type);

出错 images.internal.imageDisplayParseInputs (第 79 行)
common_args = images.internal.imageDisplayValidateParams(common_args);

出错 imshow (第 253 行)
    images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});

出错 Untitled (第 7 行)
imshow(I);

解决方法:

1 这个属于 RGBA 四通道的图像。A一般代表透明度。
简单点的话,直接删除(如果A的元素大多数为1或255的话)
RGB=RGBA(:,:,1:3)

2 你用个for循环,把4维的图放到一个N个三维的RGB图就可以了

修改之后的代码

I = imread('smallcat.tif');
 I1=I(:,:,1:3)
se = strel('ball',5,5)
se = strel('ball',5,5)
I2 = imdilate(I1,se);%膨胀图像
subplot(1,2,1);
imshow(I1);
xlabel('(a)原始图像');
subplot(1,2,2); 
imshow(I2);
xlabel('(b)原始图像');

程序运行结果图:matlab imshow 多平面图像的输入项必须是大小为 MxNx3 的 RGB 图像,和imread读取路径以及特定路径修改_第1张图片

关于imread读取文件

读取地址是在matlab的文件显示路径下

matlab imshow 多平面图像的输入项必须是大小为 MxNx3 的 RGB 图像,和imread读取路径以及特定路径修改_第2张图片

 把图片放到该地址下即可读取

利用matlab读取指定路径下的图像

%% 读入指定路径imgFolder下的图像imgName
imgFolder = 'F:\博\快盘\图像+数据\images\文章实验图'; %指定路径
imgName = 'tile3_24.png'; %指定路径下的图像的名字
% read the image
imgInput= imread(fullfile(imgFolder,imgName)); %读入图像
 

你可能感兴趣的:(matlab,学习,matlab)