Black image after imread
18 views (last 30 days)
Show older comments
andrea vironda
on 8 Mar 2016
Edited: Image Analyst
on 5 Mar 2020
hello using this code:
I1 = imread('E:\Dropbox\Andrea VMS\Esame_di_Stato\Programmi\Spur_Gear\Spur11.PNG');
imshow(I1);
Y_j=input('Insert the geometrical coefficient of flexural resistance: ');
close
appears a black window. using other images i have no problem. this is an image i scanned from a book
2 Comments
Geoff Hayes
on 8 Mar 2016
Andrea - what are the dimensions of I1 and what is its data type? For example, what does the following return
class(I1)
Accepted Answer
Image Analyst
on 8 Mar 2016
Try
imshow(I1, []);
message = sprintf('Max Value = %f\nMin Value = %f\n', max(I1(:)), min(I1(:)))
uiwait(helpdlg(message));
Also, check the values of I1 in the variable editor to see what they are.
3 Comments
More Answers (1)
Walter Roberson
on 8 Mar 2016
The PNG image might not be in RGB form. In particular it might be in indexed form, or it might be in grayscale. You should use the two-output form of imread() if it is an indexed image, and you should use colormap(gray(256)) if it is grayscale.
3 Comments
Image Analyst
on 24 May 2018
You call that right after you call imshow() to display the image. Here's some snippets:
[imageArray, colorMap] = imread(fullImageFileName);
% colorMap will have something for an indexed image (gray scale image with a stored colormap).
% colorMap will be empty for a true color RGB image or a monochrome gray scale image.
% Here we actually display the image in the "axesImage" axes.
imshow(imageArray, 'InitialMagnification', 'fit', 'parent', handles.axesImage);
[rows, columns, numberOfColorChannels] = size(imageArray);
% Get the file date
fileInfo = dir(fullImageFileName);
txtInfo = sprintf('%s\n\n%d lines (rows) vertically\n%d columns across\n%d color channels\n', ...
[basefilename extension], rows, columns, numberOfColorChannels);
% Tell user the type of image it is.
if numberOfColorChannels == 3
colorbar 'off'; % get rid of colorbar.
txtInfo = sprintf('%s\nThis is a true color, RGB image.', txtInfo);
elseif numberOfColorChannels == 1 && isempty(colorMap)
colorbar 'off'; % get rid of colorbar.
txtInfo = sprintf('%s\nThis is a gray scale image, with no stored color map.', txtInfo);
elseif numberOfColorChannels == 1 && ~isempty(colorMap)
txtInfo = sprintf('%s\nThis is an indexed image. It has one "value" channel with a stored color map that is used to pseudocolor it.', txtInfo);
colormap(colorMap);
whos colorMap;
%fprintf('About to apply the colormap...\n');
% Thanks to Jeff Mather at the Mathworks to helping to get this working for an indexed image.
colorbar('peer', handles.axesImage);
%fprintf('Done applying the colormap.\n');
end
uiwait(helpdlg(txtInfo));
Adapt as needed for your program.
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!