Read and Display Selected Image from a Folder Based on Dimension

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

 採用された回答

Ameer Hamza
Ameer Hamza 2020 年 4 月 16 日
編集済み: Ameer Hamza 2020 年 4 月 16 日

0 投票

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 件のコメント

Fahmi Akmal Dzulkifli
Fahmi Akmal Dzulkifli 2020 年 4 月 16 日
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
Ameer Hamza 2020 年 4 月 16 日
I made an oversight in my initial code. Please check the updated code.
Fahmi Akmal Dzulkifli
Fahmi Akmal Dzulkifli 2020 年 4 月 16 日
Done, thank you very much for your kind assistance
Ameer Hamza
Ameer Hamza 2020 年 4 月 16 日
Glad to be of help.
Fahmi Akmal Dzulkifli
Fahmi Akmal Dzulkifli 2020 年 4 月 16 日
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
Ameer Hamza 2020 年 4 月 16 日
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
Fahmi Akmal Dzulkifli 2020 年 4 月 16 日
Ok, noted. Again, thank you very much Sir
Fahmi Akmal Dzulkifli
Fahmi Akmal Dzulkifli 2020 年 4 月 21 日
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
Ameer Hamza 2020 年 4 月 21 日
Can you start a new question and describe the problem in more detail. Paste the link here so that I will get a notification.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by