這裏的多個圖像是期望的工作流程:載入在MATLAB
- 欲100倍的圖像加載到MATLAB工作區
- 運行上的圖像
- 保存我的輸出一堆我的代碼(輸出由我的代碼返回是一個整數陣列)在一個新的陣列
到最後,我應該有一個數據結構存儲圖像1-100代碼的輸出。
我該怎麼做呢?
這裏的多個圖像是期望的工作流程:載入在MATLAB
到最後,我應該有一個數據結構存儲圖像1-100代碼的輸出。
我該怎麼做呢?
假設你的圖像在一個連續的命名方式,你可以這樣做:
N = 100
IMAGES = cell(1,N);
FNAMEFMT = 'image_%d.png';
% Load images
for i=1:N
IMAGES{i} = imread(sprintf(FNAMEFMT, i));
end
% Run code
RESULT = cell(1,N);
for i=1:N
RESULT{i} = someImageProcessingFunction(IMAGES{i});
end
單元陣列RESULT
則包含每個圖像的輸出。
請注意,根據圖像的大小,預取圖像可能會導致內存不足。
如果您知道所在目錄的名稱,或者如果您轉到該目錄,請使用dir獲取映像名稱列表。
現在,它只是一個for循環加載圖像。將圖像存儲在單元陣列中。例如...
D = dir('*.jpg');
imcell = cell(1,numel(D));
for i = 1:numel(D)
imcell{i} = imread(D(i).name);
end
請注意這100個圖像會佔用太多的內存。例如,如果是uint8 RGB值,則單個1Kx1K圖像需要3兆字節才能存儲。這似乎不是一個巨大的數額。
但是,這些圖像中的100個將需要300 MB的RAM。真正的問題是如果您對這些映像的操作將它們變成雙打,那麼它們現在將佔用2.4 GIGA內存。這會很快耗盡你擁有的RAM數量,特別是如果你不使用64位版本的MATLAB。
正如很多人所說,這可能會相當大。完成後是否有理由在記憶中需要所有這些內容?當你完成它們時,你可以將單個結果寫成文件嗎?這樣在給定的時間內,你永遠不會有超過內存中的輸入和輸出圖像?
IMWRITE在你完成後很容易讓他們失去記憶。