【问题标题】:Change Color For Parts of an Image更改图像部分的颜色
【发布时间】:2012-03-07 18:16:54
【问题描述】:

我正在尝试找到一种解决方案,可以让我更改图像部分的颜色。

例如,让我们说一张椅子的图片。 椅子可以有不同的框架或垫子颜色。 我打算让用户选择框架或垫子并更新图像。 我们只能上传一张椅子图片。

非常感谢任何想法!

【问题讨论】:

  • 也许您可以从单独的 PNG 文件构建图像?您将有一个用于框架,一个用于垫子,一个用于背景。您将相应地重新着色框架和缓冲垫,然后将它们分层成一个图像。
  • 我想除了有两个单独的图像用于框架和垫子之外,别无他法。否则在某些情况下,尝试为框架着色可能会导致坐垫颜色改变或反之。我会尝试根据您的想法进行编码。感谢科林和卢卡斯!
  • 当然 :) 我希望我能给你一些工作代码,但我以前从未在 C# 中处理过图像处理。
  • 在图像处理的情况下,性能可能很重要。您可以尝试使用不安全的代码来加快速度。这里有一个关于它的问题:stackoverflow.com/questions/6203851/…。或者,您可以定义一组可用的颜色,并使用不同颜色的手动准备的图像(包含图像的一部分)。

标签: c# colors gdi+


【解决方案1】:

检测要修改的图像部分

以编程方式检测图像上的对象可能不是最简单的事情;)。我想Collin O'Dell 在他对这个问题的评论中提出了一个很好的解决方案。他建议使用少量图像,手动分离要重新着色的图像部分。然后,您可以从几个不同的层合成最终图像。

但是,您也可以保留包含所有对象的主图像并手动制作一些附加图像,但仅保留 对象的蒙版(即物体所在的地方)。然后,您可以轻松检查哪些像素应该重新着色。这将允许您直接在一张图像上绘画并避免合成。

计算颜色

当您想为照片重新着色时,您可能希望能够保留阴影效果等,而不是用相同的纯色覆盖所有照片。 为了实现这一点,您可以使用 HSV 色彩空间而不是 RGB。要使用此方法,您应该:

  • 读取像素的颜色(RGB
  • 将其重新计算为 HSV
  • 更改颜色的色调值以获得所需的色调
  • 将修改后的颜色重新计算回 RGB
  • 设置像素的新颜色

有关 HSV 色彩空间的更多信息,您可以查看此处:http://en.wikipedia.org/wiki/HSL_and_HSV

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多