boss3271 发表于 2007-4-30 22:44

颜色提取的问题.

求助高手 我想把任何一个图像中的红色个提取出来 请问代码是什么,本人刚开始接触MATLB.毕业设计需要 所以请高手帮个忙 实在非常的急.最好是完整点的 我都不知道怎样把处理后的图片显示出来

boss3271 发表于 2007-4-30 22:45

老师叫我自己看书 我从来没接触过 书上写的很模糊 实在很难看懂 高手帮忙 在下不尽感激

boss3271 发表于 2007-4-30 22:57

高手帮个忙实在急啊 谢谢了

eight 发表于 2007-4-30 23:01

原帖由 boss3271 于 2007-4-30 22:57 发表
高手帮个忙实在急啊 谢谢了

既然这么急,为何不自己动手搜索一下?请看看置顶贴:聚宝盆启发一下

ps:问题的解答置顶贴就有,自己好好找找

boss3271 发表于 2007-4-30 23:20

A=imread('input.bmp');
H = size(A);
BB=repmat(255, H(1)*H(2), H(3));
C=(A(:,:,1)==0 & A(:,:,2)==0 & A(:,:,3)==255);
BB(C,1) = 0;
BB(C,2) = 0;
B = reshape(BB, H(1), H(2), H(3));
imwrite(B,'output.bmp');
我是新手看不太懂...这是蓝色的提取 ..我不知道怎样能把处理后的图象显示出来
比如A=imread('input.bmp');括号中是不是写我图像文件名和格式
还有就是怎样把处理好的图像显示出来
我就是根据这篇文章找到这论坛的 因为实在不懂 所以想请假下 麻烦了 谢谢!

boss3271 发表于 2007-4-30 23:21

我照书上的程序写 也显示不出处理后的图像来 能指点下吗 实在是新手不懂

eight 发表于 2007-4-30 23:31

1. 把你的图片 copy 到 matlab 安装路径 的 work 目录下;
2. 新建一个 m 文件;
3. 把以下代码 copy 到 m 文件中:A=imread('input.bmp'); %把文件名 input.bmp 换成你的图片名称
imshow(A);
H = size(A);
BB=repmat(255, H(1)*H(2), H(3));
C=(A(:,:,1)==0 & A(:,:,2)==0 & A(:,:,3)==255);
BB(C,1) = 0;
BB(C,2) = 0;
B = reshape(BB, H(1), H(2), H(3));
imwrite(B,'output.bmp'); %如果不需要把结果图片存盘,则此句可以注释掉,即在语句前面加上“%”
imshow(B);4. 运行菜单 Debug 中的 Run (或者 Save & Run) 命令,此时需要输入存储的m文件名称,随便填入一个有效的英文名,就可以了

[ 本帖最后由 eight 于 2007-4-30 23:32 编辑 ]

boss3271 发表于 2007-4-30 23:42

ans =

    11

>>
什么意思 ...不懂...

boss3271 发表于 2007-4-30 23:45

好了...谢谢你了..我再去研究下 跟那位兄弟一样都是白色 的 ..谢谢你啊

eight 发表于 2007-4-30 23:51

原帖由 boss3271 于 2007-4-30 23:42 发表
ans =

    11

>>
什么意思 ...不懂...

要多加一个 figure 才能使得原图不被结果图覆盖,即:

A=imread('input.bmp'); %把文件名 input.bmp 换成你的图片名称
imshow(A);
H = size(A);
BB=repmat(255, H(1)*H(2), H(3));
C=(A(:,:,1)==0 & A(:,:,2)==0 & A(:,:,3)==255);
BB(C,1) = 0;
BB(C,2) = 0;
B = reshape(BB, H(1), H(2), H(3));
imwrite(B,'output.bmp'); %如果不需要把结果图片存盘,则此句可以注释掉,即在语句前面加上“%”
figure;
imshow(B);


以上代码我运行后没有问题,注意 input.bmp 要求是24位位图

eight 发表于 2007-4-30 23:53

原帖由 boss3271 于 2007-4-30 23:45 发表
好了...谢谢你了..我再去研究下 跟那位兄弟一样都是白色 的 ..谢谢你啊
你看看 如何对RGB图像实现基于颜色的目标提取? 这个帖子。白色的问题我给了一个说明,也给出了一个蓝色提取出来的例子

boss3271 发表于 2007-5-1 00:20

Error in ==> Untitled at 4
BB=repmat(255, H(1)*H(2), H(3));

eight 发表于 2007-5-1 00:23

原帖由 boss3271 于 2007-5-1 00:20 发表
Error in ==> Untitled at 4
BB=repmat(255, H(1)*H(2), H(3));
估计你的图片不是RGB的,换一个RGB的(24位位图)试试

boss3271 发表于 2007-5-1 00:36

C=(A(:,:,1)==0 & A(:,:,2)==0 & A(:,:,3)==255);
BB(C,1) = 0;
BB(C,2) = 0;
B = reshape(BB, H(1), H(2), H(3));
继续问个问题 如果是红色我估计这上面改 那要怎么改呢 .指教下
我看了下这样的资料 但是不明白
H直定义在315度到360度0度到23度是红色什么意思

eight 发表于 2007-5-1 10:57

原帖由 boss3271 于 2007-5-1 00:36 发表
C=(A(:,:,1)==0 & A(:,:,2)==0 & A(:,:,3)==255);
BB(C,1) = 0;
BB(C,2) = 0;
B = reshape(BB, H(1), H(2), H(3));
继续问个问题 如果是红色我估计这上面改 那要怎么改呢 .指教下
我看了下这样的资料 但是 ...

那三个值分别对应R、G、B,红色的话就是(255,0,0)

另外一个问题不懂
页: [1] 2
查看完整版本: 颜色提取的问题.