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
采纳的回答
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 个评论
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});
I made an oversight in my initial code. Please check the updated code.
Done, thank you very much for your kind assistance
Glad to be of help.
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) = [];
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.
Ok, noted. Again, thank you very much Sir
Sorry Sir for disturbing, I just want to ask, can I delete the unwanted images from the folder automatically after selecting the nine images?
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 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Call Python from MATLAB 的更多信息
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- 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)
