0

選択した色以外のすべての色を削除する誰かのコードを勉強しています。コードサンプルの次の行を置き換える場合、赤を除くすべてを黒くペイントしようとします

nonRedIndex = (hPlane > 20) & (hPlane < 340);

ただし、他のダイアポゾンは機能しないことがわかりました。なぜか教えてくれますか?

cdata = imread(path);
hsvImage1 = rgb2hsv(cdata);         %# Convert the image to HSV space
hPlane = 360.*hsvImage1(:,:,1);     %# Get the hue plane scaled from 0 to 360
sPlane = hsvImage1(:,:,2);          %# Get the saturation plane
lPlane = hsvImage1(:,:,3); 
nonRedIndex = (hPlane > 140) & ...  %# Select "non-red" pixels
              (hPlane < 120);
sPlane(nonRedIndex) = 0;           %# Set the selected pixel saturations to 0
lPlane(nonRedIndex) = 0;
hsvImage1(:,:,2) = sPlane;          %# Update the saturation plane
hsvImage1(:,:,3) = lPlane;


rgbImage1 = hsv2rgb(hsvImage1);  
4

1 に答える 1

1

間違った論理積があります-hPlane要素は140より大きく、同時に120より小さくなければなりません。これは機能するはずです:

nonRedIndex = (hPlane < 140) & (hPlane > 120);
于 2013-03-06T10:47:27.007 に答える