尝试将一些灰度图像转换为RGB(1,1,1)。我有一个大约1500张图像的文件夹,需要使用以下代码批量转换(与单个图像配合使用)
足够有趣,
imwrite(repmat(imread(files(1).name), [1 1 3]),files(1).name)
imwrite(repmat(imread(files(2).name), [1 1 3]),files(2).name)
imwrite(repmat(imread(files(3).name), [1 1 3]),files(3).name)
...(依此类推)
工作正常
files = dir('*.jpeg')
for I=1:length(files)
imwrite(repmat(imread(files(i).name), [1 1 3]),files(i).name)
display(i)
end
使用writejpg时出错(第46行) JPEG文件不支持具有9个组件的数据。
写入错误(第485行) feval(fmt_s.write,data,map,filename,paramPairs {:});
答案 0 :(得分:1)
您需要做两件事:
使用正确的变量名进行循环,即i
或I
,但不要混合使用!请注意,i
具有作为虚数常量的内置定义,因此最好使用I
或完全不同的东西。
在尝试写入文件时,对于不支持9个元素的JPEG显示警告。这表明您盲目地使用repmat
将已经是RBG的图像一式三份。
我们可以像这样解决这两个问题:
files = dir('*.jpeg')
for k = 1:length(files)
img = imread( files(k).name ); % Load the image first
% Convert greyscale to RBG if not already RGB
% If it's already RBG, we don't even need to overwrite the image
if size(img,3) == 1
imwrite(repmat(img, [1 1 3]), files(k).name);
end
% Display progress
display(k)
end