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
2020 年 4 月 16 日
編集済み: Ameer Hamza
2020 年 4 月 16 日
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!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の 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)
