Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我正在尝试创建一种类似于《 罪恶之城》或其他电影的效果,其中它们会删除图像中除一种颜色以外的所有颜色。
我有一个RGB图像,我想将其转换为灰度,但我想保留一种颜色。 这是我的照片: ![]() 我想保持红色。其余应为灰度。 到目前为止,这是我的代码输出的内容(您可以看到这些区域是正确的,但是我不知道为什么它们是白色而不是红色): ![]() 到目前为止,这是我的代码: 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) ![]() 更多&回答... |
![]() |
![]() |