如何检测图像中的不同图层

时间:2013-10-16 05:44:18

标签: c# javascript html wpf

我正在使用WPF C#中的应用程序,其中我有一个图像,我想要检测不同的图像层,以便我可以通过从颜色托盘中选择任何颜色来更改图层的颜色(这是正常颜色或渐变颜色)。 enter image description here

假设我有上面的图像,在图像中有不同的层,如(墙,沙发,瓷砖,窗户,枕头等)。现在我的问题是如何检测Image&的墙层。将其颜色从黄色渐变更改为其他正常颜色或渐变颜色,对于其他图像层(如沙发)相同,检测沙发和将它的颜色从白色改为其他&与图像的窗口,地板,枕头层相同。

1 个答案:

答案 0 :(得分:0)

我认为你误解了图像中存储的内容。您会注意到,您可能在PhotoShop等程序中创建的图层只能以PhotoShop自己的格式保存,而不能以.Net支持的更常见的图像格式(png,bmp,gif,jpg)保存。一旦您以其中一种格式加载图像,您将基本上只有一个二维颜色数组。没有什么可以将一个像素分离或链接到其邻居或实际上任何其他像素。所以绝对没有层的概念。

你可以提供某种算法,让你的图像在寻找容差范围内的像素,并以这种方式定义它们的集合,但这会产生非常差的结果。如果您不确定我的意思,请尝试在您喜欢的图像编辑器中对图像执行填充。

为了获得更好的效果,请不要在应用程序中使用单个图像,而是使用一组图像,每个图层对应一个图像,以便在显示复合图形时将它们重新组合在一起,然后重新着色所需的图层。图片。

 <Grid>
   <Image Source="Background"/>
   <Image Source="RecolouredImage"/>
   <Image Source="Foreground"/>
 </Grid

当然,这仅适用于您在开发时控制图像的情况,而不是用户在运行时加载的图像。