如何在 matlab 中丢弃其他颜色的同时保留图像中的颜色?

How to keep a color in an image while discarding others in matlab?

我想保留图像中的特定颜色并丢弃所有其他颜色。 当我尝试保持红色时,程序可以正常工作,但是当我尝试使用类似的绿色方法时,我什么也得不到。 谁能帮忙。 下面是我的程序。由于某些声誉问题,无法 post 图片。

a = imread('image.jpg');
b = rgb2hsv(a);
h = 360 .* b(:,:,1);
s = b(:,:,2);
v = b(:,:,3);
nonred = (h > 20) & (h < 340);
v(nonred)=0;
b(:,:,3)=v;
c=hsv2rgb(b);

这里是绿色的代码

a = imread('image.jpg.');
b = rgb2hsv(a);
h = 360 .* b(:,:,1);
s = b(:,:,2);
v = b(:,:,3);
nongreen = (h > 210) & (h < 30);
v(nongreen) = 0;
b(:,:,3)=v;
c=hsv2rgb(b);

问题在线:

nongreen = (h > 210) & (h < 30);

h的值都不能满足。即您正在寻找大于 210 且小于 30 的 h。

由于您的 angular 色相范围在 0-360 之间,您可以直接或改为:

nongreen = (h > 210) | (h < 30);