我正在嘗試在 Matlab 中對約 5,000 個檔案運行影像分析腳本。我正在嘗試在 for 回圈中運行腳本的主要部分并遍歷每個檔案名。我已將該目錄列為 aa 變數,并提出了如下內容:
images = dir
images.name
imagesdim = size(images)
imageslength = imagesdim(1)
for i = 1:imageslength
cimg = imread(images(i,1).name);
etc etc
end
但是,這似乎不是 imread 可接受的輸入引數。有什么方法可以格式化這個串列,以便我可以在這里使用一個變數,還是我必須復制這個引數 5,000 次?
uj5u.com熱心網友回復:
我使用dir命令的函式形式在影像目錄中執行此操作。例如,如果您正在處理 TIFF 檔案:
dir_items = dir('*.tiff');
file_names = {dir_items.name};
disp('Using .tiff files found in current directory:')
disp(file_names');
for k = 1:length(file_names)
disp(file_names{k})
cimg = imread(file_names{k});
end
如果你不能使用像 "*.tiff" 這樣的通配符過濾器,那么你必須檢查陣列中每個結構的 isdir 欄位,如下所示:
dir_items = dir;
for k = 1:length(dir_items)
if dir_items(k).isdir==1
fprintf(1,'%s is a directory (ignore)\n',dir_items(k).name)
else
disp(dir_items(k).name)
cimg = imread(dir_items(k).name)
end
end
uj5u.com熱心網友回復:
在 MATLAB 中遍歷檔案夾或嵌套影像檔案夾的一種更簡單的方法是使用 imageDatastore。
imds = imageDatastore(desiredDirectory,"FileExtensions",[".tif",".tiff"]);
while hasdata(imds)
img = read(imds);
% Your code that operates on img
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/363400.html
上一篇:拉伸圖形外的區域-matlab
下一篇:繞單位圓旋轉線到任意位置
