Image 将灰度JPEG图像转换为RGB可获得9个通道
正在尝试将一些灰度图像转换为RGB(1,1,1)。。我有一个包含大约1500张图片的文件夹,我需要使用下面的代码进行批量转换(这对单个图片很有效) 有趣的是Image 将灰度JPEG图像转换为RGB可获得9个通道,image,matlab,imread,Image,Matlab,Imread,正在尝试将一些灰度图像转换为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]),
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个组件的数据
imwrite错误(第485行)
feval(fmt_.write、数据、映射、文件名、参数对{:})
你需要做两件事:
i
或i
,但不要混用!请注意,i
有一个内置的定义作为虚常数,因此最好使用i
或完全不同的东西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
在循环中迭代“I”并使用“I”。循环使用大写字母I。尝试将其更改为小写字母i。
i
在MATLAB中用于虚数。请不要将i
的内置定义用作变量名而使其黯然失色。相反,将i
改为大写i
似乎您正在尝试“rgb ise”已处理的文件。我建议阅读后检查尺寸(img,3)。这很有效。谢谢后续问题-如果我在多个子文件夹中有文件,我在使用img=imread(files(k).name)时会出错-好像它无法读取子文件夹的文件:错误使用imread>get_full_filename(第516行)文件“img_1.jpg”不存在。如果文件在当前目录中,则只能使用文件名(无路径)。只要您想使用不同的路径,就需要指定它。这应该可以工作:img=imread(fullfile(files(k).folder,files(k).name))代码>。如果此答案解决了您的问题,请将其标记为已接受。