MATLAB将RBG图像转化成灰度图

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/huanhuan_Coder/article/details/80877523

  最近在跑孪生网络,最开始是用sorenbouma推荐的数据集,跑的还算顺利,但是当我导入自己收集的数据集时,总是会报错:ValueError: too many values to unpack (expected 4)
这里写图片描述
  这种错误是指一个tuple值赋给一个tuple变量时,变量个数不够造成的。如: a , b , c = ( 1 , 2 , 3 , 4 ) a, b ,c= (1, 2, 3,4) ,即我们传入的参数多于需要传入的参数。
  在我的函数中需要传入 3 3 个参数,图片的种类数量,图片所在的文件夹,和一个图片的.pickle文件。前两个没有什么大问题,有问题的是第 3 3 个参数,最后我发现,该网络需要传入的是 105 × 105 × 1 105\times105\times1 的灰度图,即单通道的图像,虽然我在扫描收集的手写体的时候保存的格式是黑白格式,但是仍然是 3 3 通道的RGB图像,通道数增加,解压到.pickle中的数据量就变大,传入的参数自然就增多了。所以需要将RGB图像转换成灰度图,图片数量略大,我们用MATLAB处理。
  代码及注释如下:

imgPath = 'C:\Users\刘欢\Desktop\images_evaluation\005\character04\';        % 图像库路径
imgDir  = dir([imgPath '*.jpg']);                  % 遍历所有jpg格式文件
for i = 1:length(imgDir)                           % 遍历结构体
    img = imread([imgPath imgDir(i).name]);        %读取每张图片
    imgGray=rgb2gray(img);                         %将RGB图片转化成灰度图像
    imwrite(imgGray,[imgPath imgDir(i).name]);     %保存灰度图像以指定名字至指定文件夹
end

  处理结果:我们用一幅图来说明

  • 处理前是 24 b i t 24bit 3 3 通道的RGB图像
    这里写图片描述
  • 处理后是 8 b i t 8bit 1 1 通道的灰度图像。
    这里写图片描述

猜你喜欢

转载自blog.csdn.net/huanhuan_Coder/article/details/80877523