如何更改图像的背景颜色?

Posted

技术标签:

【中文标题】如何更改图像的背景颜色?【英文标题】:How can I change the background color of the image? 【发布时间】:2014-11-20 06:04:55 【问题描述】:

我想remove/change Matlab 中图像的背景颜色。

有人知道怎么做吗?

这是一个示例图像,我想删除绿色背景颜色。

(来源:frip.in)

【问题讨论】:

你知道背景是什么颜色吗? 不,我不知道。由于有不同的情况,其中一些可能是绿色背景色,而另一些可能是其他颜色。有没有办法做到这一点? 顺便说一句,不同区域的背景颜色可能略有不同。如上图所示,某些区域呈浅绿色。 【参考方案1】:

最简单的答案是,

c = [70 100 70];
thresh = 50;
A = imread('image.jpg');
B = zeros(size(A));
Ar = A(:,:,1);
Ag = A(:,:,2);
Ab = A(:,:,3);
Br = B(:,:,1);
Bg = B(:,:,2);
Bb = B(:,:,3);
logmap = (Ar > (c(1) - thresh)).*(Ar < (c(1) + thresh)).*...
         (Ag > (c(2) - thresh)).*(Ag < (c(2) + thresh)).*...
         (Ab > (c(3) - thresh)).*(Ab < (c(3) + thresh));
Ar(logmap == 1) = Br(logmap == 1);
Ag(logmap == 1) = Bg(logmap == 1); 
Ab(logmap == 1) = Bb(logmap == 1);
A = cat(3 ,Ar,Ag,Ab);
imshow(A);

您应该更改c(背景颜色)和threshc 的阈值)并找到最适合您的背景。

您可以将B 定义为新的背景图片。 Fr 示例添加Bb(:,:) = 255;会给你一个蓝色的背景。

您甚至可以将B 定义为图像。

为了检测背景,您可以找到图像中最常用的颜色,但我认为这不一定是背景。

【讨论】:

感谢您的回答。什么是 C 和 thresh?根据什么规则来更改其他图像的这两个值?非常感谢! c 是绿色的定义(在 [R G B] 上定义,值从 0 到 255)。 Thresh 是你的阈值,它定义了绿色和非绿色之间的区别。 我明白了。非常感谢你!如果我们事先不知道背景颜色是什么,有没有办法改变颜色,因为会有很多不同背景颜色的图像?还是直接去掉背景色? @Kim 你可以通过分析三个 RGB 层的直方图找到图像的默认背景。 @R.Bergamote。一个关于查找图像默认背景颜色的示例代码?谢谢

以上是关于如何更改图像的背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章

在swift UI中点击按钮时如何更改背景颜色和图像?

如何将可自定义的颜色更改框下载为带有背景图像的图像?

如何在 Swift 中更改 TabBar 的颜色?图像作为导航栏中的背景?

如何更改 UINavigationItem 的背景颜色?

如何根据背景颜色自动更改视图的透明颜色

更改通过背景图像加载的 SVG 图像的填充颜色 [重复]