poster
2019-12-10, 20:48
我正在尝试创建一种类似于《 罪恶之城》或其他电影的效果,其中它们会删除图像中除一种颜色以外的所有颜色。
我有一个RGB图像,我想将其转换为灰度,但我想保留一种颜色。
这是我的照片:
https://i.stack.imgur.com/EcyOd.jpg
我想保持红色。其余应为灰度。
到目前为止,这是我的代码输出的内容(您可以看到这些区域是正确的,但是我不知道为什么它们是白色而不是红色):
https://i.stack.imgur.com/22O60.jpg
到目前为止,这是我的代码:
filename = 'roses.jpg'; [cdata,map] = imread( filename ); % convert to RGB if it is indexed image if ~isempty( map ) cdata = idx2rgb( cdata, map ); end %imtool('roses.jpg'); imWidth = 685; imHeight = 428; % RGB ranges of a color we want to keep redRange = [140 255]; greenRange = [0 40]; blueRange = [0 40]; % RGB values we don't want to convert to grayscale redToKeep = zeros(imHeight, imWidth); greenToKeep = zeros(imHeight, imWidth); blueToKeep = zeros(imHeight, imWidth); for x=1:imWidth for y=1:imHeight red = cdata( y, x, 1 ); green = cdata( y, x, 2 ); blue = cdata( y, x, 3 ); if (red >= redRange(1) && red = greenRange(1) && green = blueRange(1) && blue 80 || pic(mm,nn,3) > 100 gsc = 0.3*pic(mm,nn,1) + 0.59*pic(mm,nn,2) + 0.11*pic(mm,nn,3); pic(mm,nn,:) = [gsc gsc gsc]; end end end imshow(pic) https://i.stack.imgur.com/7JJlD.jpg
更多&回答... (https://stackoverflow.com/questions/4063965)
我有一个RGB图像,我想将其转换为灰度,但我想保留一种颜色。
这是我的照片:
https://i.stack.imgur.com/EcyOd.jpg
我想保持红色。其余应为灰度。
到目前为止,这是我的代码输出的内容(您可以看到这些区域是正确的,但是我不知道为什么它们是白色而不是红色):
https://i.stack.imgur.com/22O60.jpg
到目前为止,这是我的代码:
filename = 'roses.jpg'; [cdata,map] = imread( filename ); % convert to RGB if it is indexed image if ~isempty( map ) cdata = idx2rgb( cdata, map ); end %imtool('roses.jpg'); imWidth = 685; imHeight = 428; % RGB ranges of a color we want to keep redRange = [140 255]; greenRange = [0 40]; blueRange = [0 40]; % RGB values we don't want to convert to grayscale redToKeep = zeros(imHeight, imWidth); greenToKeep = zeros(imHeight, imWidth); blueToKeep = zeros(imHeight, imWidth); for x=1:imWidth for y=1:imHeight red = cdata( y, x, 1 ); green = cdata( y, x, 2 ); blue = cdata( y, x, 3 ); if (red >= redRange(1) && red = greenRange(1) && green = blueRange(1) && blue 80 || pic(mm,nn,3) > 100 gsc = 0.3*pic(mm,nn,1) + 0.59*pic(mm,nn,2) + 0.11*pic(mm,nn,3); pic(mm,nn,:) = [gsc gsc gsc]; end end end imshow(pic) https://i.stack.imgur.com/7JJlD.jpg
更多&回答... (https://stackoverflow.com/questions/4063965)