displaying Images from image array

8 次查看(过去 30 天)
Vivek Raj
Vivek Raj 2023-3-29
移动DGM 2023-5-29
I have 35 gray images which is stored in "gray" variable. I want to display all these images using imshow one by one. The problem is I am getting error.
Gray variable size =35*1080*1920
imshow(Gray(1:1,:,:))
Error using images.internal.imageDisplayValidateParams>validateCData
Multi-plane image inputs must be RGB images of size MxNx3.
Error in images.internal.imageDisplayValidateParams (line 30)
common_args.CData = validateCData(common_args.CData,image_type);
Error in images.internal.imageDisplayParseInputs (line 79)
common_args = images.internal.imageDisplayValidateParams(common_args);
Error in imshow (line 253)
images.internal.imageDisplayParseInputs({'Parent','Border','Reduce'},preparsed_varargin{:});

回答(2 个)

Dyuman Joshi
Dyuman Joshi 2023-3-30
移动:DGM 2023-5-29
Maybe size is the problem, try reshaping the size of the array and then using imshow()
in=rand(35,1080,1920);
out=in(1,:,:);
size(out)
ans = 1×3
1 1080 1920
out=permute(out,[2 3 1]);
size(out)
ans = 1×2
1080 1920
imshow(out)
  2 个评论
Vivek Raj
Vivek Raj 2023-3-31
移动:DGM 2023-5-29
Thanks a lot but for curiosity if i am writing
out=in(1,:,:);% just to know the difference between 1*1080*1920 and 1080*1920 and why its not working
imshow(out)
Dyuman Joshi
Dyuman Joshi 2023-3-31
移动:DGM 2023-5-29
The difference is that 1x1080x1920 is a 3D array whereas 1080x1920 is a 2D array.
As to why it's not working - A grayscale image is expected to be a 2D matrix.

请先登录,再进行评论。


Aman
Aman 2023-5-29
Hi,
As per my understanding, you have an array of grayscale images, and you want to show all of them in a single plot.
The 'Gray' variable has a size of 35*1080*1920, which means it has an image of length 35, width 1080, and number of channels 1920; it doesn’t mean 35 grayscale images of size 1080*1920. You can store the grayscale images in the cell array, and then you can use the ‘subplot' method to plot all of them in a single plot. You can look at the below code for reference.
img = imread("dummy.png");
Gray{1} = rgb2gray(img);
Gray{2} = rgb2gray(img);
Gray{3} = rgb2gray(img);
Gray{4} = rgb2gray(img);
subplot(2,2,1);
imshow(Gray{1});
subplot(2,2,2);
imshow(Gray{2});
subplot(2,2,3);
imshow(Gray{3});
subplot(2,2,4);
imshow(Gray{4});
Hope it helps!

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by