Filter löschen
Filter löschen

displaying Images from image array

8 Ansichten (letzte 30 Tage)
Vivek Raj
Vivek Raj am 29 Mär. 2023
Verschoben: DGM am 29 Mai 2023
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{:});

Antworten (2)

Dyuman Joshi
Dyuman Joshi am 30 Mär. 2023
Verschoben: DGM am 29 Mai 2023
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 Kommentare
Vivek Raj
Vivek Raj am 31 Mär. 2023
Verschoben: DGM am 29 Mai 2023
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 am 31 Mär. 2023
Verschoben: DGM am 29 Mai 2023
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.

Melden Sie sich an, um zu kommentieren.


Aman
Aman am 29 Mai 2023
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