Read and Display Selected Image from a Folder Based on Dimension
You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Show older comments
0 votes
I have a folder that contains 16 images. From these images, 9 of them have a dimension of 1280x1024, and the rest of them have different dimensions. How can I read and display these 9 images only?
folder = 'C:\Users\Documents\PhD\Analysis\Hot-Spot\';
jpeg_files = dir(fullfile(folder,'*.jpg'));
nfiles2 = length(jpeg_files);
for k = 1:nfiles2
currentimage{k} = imread(fullfile(folder,jpeg_files(k).name));
figure; imshow(currentimage{k}); % creates a new window for each image
end
Accepted Answer
Ameer Hamza
on 16 Apr 2020
Edited: Ameer Hamza
on 16 Apr 2020
Try this
folder = 'C:\Users\Documents\PhD\Analysis\Hot-Spot\';
jpeg_files = dir(fullfile(folder,'*.jpg'));
img_info = cellfun(@(x) {imfinfo(x)}, fullfile({jpeg_files.folder}, {jpeg_files.name}));
img_dim = cellfun(@(x) {[x.Width x.Height]}, img_info)';
img_dim = cell2mat(img_dim);
idx = all(img_dim == [1280 1024], 2);
jpeg_files(~idx) = [];
nfiles2 = length(jpeg_files);
for k = 1:nfiles2
currentimage{k} = imread(fullfile(folder,jpeg_files(k).name));
figure; imshow(currentimage{k}); % creates a new window for each image
end
9 Comments
Fahmi Akmal Dzulkifli
on 16 Apr 2020
The error appeared like this:
Error using imfinfo (line 100)
Unable to open file "image_0001.jpg" for reading.
Error in HotSpot>@(x){imfinfo(x)}
Error in HotSpot (line 45)
img_info = cellfun(@(x) {imfinfo(x)}, {jpeg_files.name});
Ameer Hamza
on 16 Apr 2020
I made an oversight in my initial code. Please check the updated code.
Fahmi Akmal Dzulkifli
on 16 Apr 2020
Done, thank you very much for your kind assistance
Ameer Hamza
on 16 Apr 2020
Glad to be of help.
Fahmi Akmal Dzulkifli
on 16 Apr 2020
I would be more grateful if you can tell me the process each of the line, so in the future, I know how and where to use it:
img_info = cellfun(@(x) {imfinfo(x)}, fullfile({jpeg_files.folder}, {jpeg_files.name}));
img_dim = cellfun(@(x) {[x.Width x.Height]}, img_info)';
img_dim = cell2mat(img_dim);
idx = all(img_dim == [1280 1024], 2);
jpeg_files(~idx) = [];
Ameer Hamza
on 16 Apr 2020
img_info = cellfun(@(x) {imfinfo(x)}, fullfile({jpeg_files.folder}, {jpeg_files.name}));
This line goes through all files all apply imfinfo() function, which reads image metadata, e.g., encoding, width, height, etc. and return it as struct
img_dim = cellfun(@(x) {[x.Width x.Height]}, img_info)';
img_dim = cell2mat(img_dim);
Go through the structs returned in the previous step and extract the width and height of each image and, at the end, convert it to matrix format.
idx = all(img_dim == [1280 1024], 2);
jpeg_files(~idx) = [];
get the index of all images with required width and height and delete those which does match the required resolution.
Fahmi Akmal Dzulkifli
on 16 Apr 2020
Ok, noted. Again, thank you very much Sir
Fahmi Akmal Dzulkifli
on 21 Apr 2020
Sorry Sir for disturbing, I just want to ask, can I delete the unwanted images from the folder automatically after selecting the nine images?
Ameer Hamza
on 21 Apr 2020
Can you start a new question and describe the problem in more detail. Paste the link here so that I will get a notification.
More Answers (0)
Categories
Find more on Scripts in Help Center and File Exchange
See Also
on 16 Apr 2020
on 21 Apr 2020
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)