查看: 249|回复: 5|关注: 0

[已答复] MATLAB多张图像进行灰度处理

[复制链接]

新手

5 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
发表于 2020-8-21 19:38:30 | 显示全部楼层 |阅读模式
我是MATLAB小白,感谢大佬帮我看一下我代码的问题

下面的代码,没加代码“gray = rgb2gray(I{K});%RGB到灰度图像的转换…… figure(gray)  imshow(gray)"能正确显示出几张图像,但是加了之后就只能显示一张图像了,并且这张图像也没有进行灰度处理

image = dir('E:\practice\4\图像\*.png');%读取所有png图像
N=length(image);%图像个数

name={};%存放图像文件名
I={};%存放图像的矩阵

for K=1:N
    name{K}=image(K).name;%依次得到文件名存放在数组中
    I{K}=imread(['E:\practice\4\图像\' name{K}]);%依次得到图像矩阵存放在数组中
    gray = rgb2gray(I{K});%RGB到灰度图像的转换
    figure(K)
    imshow(I{K})
    figure(gray)
    imshow(gray)
end

回复主题 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

5

帖子

0

最佳答案
发表于 2020-8-23 09:56:49 | 显示全部楼层
添加 hold on, 试试
回复此楼 已获打赏: 0 积分

举报

MATLAB 图像处理与计算机视觉
版块优秀回答者

中级

521 麦片

财富积分


5001500


71

主题

1660

帖子

112

最佳答案
  • 关注者: 36
发表于 2020-8-24 11:39:25 | 显示全部楼层
for K=1:N
    name{K}=image(K).name;%依次得到文件名存放在数组中
    I{K}=imread(['E:\practice\4\图像\' name{K}]);%依次得到图像矩阵存放在数组中
    gray = rgb2gray(I{K});%RGB到灰度图像的转换
    figure(K)
    imshow(I{K})
    figure(gray)
    imshow(gray)
    drawnow  %立即绘图,否则所有运算结束之后才绘图
    pause() % 暂停&绘图

end
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 2020-9-6 20:08:26 | 显示全部楼层

谢谢,已经解决了呢
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


2

主题

5

帖子

0

最佳答案
 楼主| 发表于 2020-9-6 23:09:30 | 显示全部楼层
myisland 发表于 2020-8-24 11:39
for K=1:N
    name{K}=image(K).name;%依次得到文件名存放在数组中
    I{K}=imread(['E:\practice\4\图像 ...

谢谢,已经解决了
但我遇到了新的问题,可以帮我看一下吗

clear all;          %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量
clc
close all;
  image = dir('E:\practice\4\图像\*.png');%读取所有png图像
  N=length(image);%图像个数

  name={};%存放图像文件名
  I={};%存放图像的矩阵
  gray={};%存放图像的矩阵

  name{1}=image(1).name;
  I{1}=imread(['E:\practice\4\图像\' name{1}]);
  gray{1}= rgb2gray(I{1});
  [rows , cols ] = size(gray{1});%得到原来图像的矩阵的参数
  
  for K=1:N
      name{K}=image(K).name;%依次得到文件名存放在数组中
      I{K}=imread(['E:\practice\4\图像\' name{K}]);%依次得到图像矩阵存放在数组中
      gray{K}= rgb2gray(I{K});%RGB到灰度图像的转换
     % m=length(cell2mat(K(1)))%计算元胞数组中第一个矩阵的长度
      
      for i = 1:rows
          for j = 1:cols
              %im2double(gray{K}(i,j))
              if gray{K}(i,j)~=gray{K+1}(i,j) %将前一张图像与后一张图像不同的像素点
                  gray{K}(i,j)=255;           %变为白色
              else
                  gray{K}(i,j)=gray{K}(i,j);
              end
              % W{K} = W{K} + gray{K}(rows,cols);
              %【注意】元胞中套元胞的获取方法为A{2,2}{1},表示第2行第2列的元胞元素中存放元胞数组的第一个元胞元素的内容
          end
      end
      figure(K)
      imshow(gray{K});
  end
捕获.PNG
回复此楼 已获打赏: 0 积分

举报

MATLAB 图像处理与计算机视觉
版块优秀回答者

中级

521 麦片

财富积分


5001500


71

主题

1660

帖子

112

最佳答案
  • 关注者: 36
发表于 2020-9-7 09:37:33 | 显示全部楼层
MATLAB442 发表于 2020-9-6 23:09
谢谢,已经解决了
但我遇到了新的问题,可以帮我看一下吗

for K=1:N-1
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /5 下一条

快速回复 返回顶部 返回列表