Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 将灰度JPEG图像转换为RGB可获得9个通道_Image_Matlab_Imread - Fatal编程技术网

Image 将灰度JPEG图像转换为RGB可获得9个通道

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]),

正在尝试将一些灰度图像转换为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个组件的数据

imwrite错误(第485行) feval(fmt_.write、数据、映射、文件名、参数对{:})


你需要做两件事:

  • 使用正确的变量名进行循环,即
    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
    

    在循环中迭代“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))。如果此答案解决了您的问题,请将其标记为已接受。