我正在寻找一种在现有图片之上叠加颜色的算法。类似于以下应用程序(墙画家)的东西:http: //itunes.apple.com/us/app/wall-painter/id396799182 ?mt=8
我想要一个类似的功能,这样我就可以在现有图片中绘制墙壁并将它们更改为不同的颜色。
我可以在 yuv 或 rgb 模式下工作。
我正在寻找一种在现有图片之上叠加颜色的算法。类似于以下应用程序(墙画家)的东西:http: //itunes.apple.com/us/app/wall-painter/id396799182 ?mt=8
我想要一个类似的功能,这样我就可以在现有图片中绘制墙壁并将它们更改为不同的颜色。
我可以在 yuv 或 rgb 模式下工作。
RGB 和 YUV 颜色模型不适合以这种方式更改颜色。我认为最好的颜色模型是 HLS。
您可以在照片编辑应用程序中评估这三个组件的效果,例如 The GIMP 的 Photoshop。
要在图片中成功绘制墙壁,您必须执行两个步骤:
找到图片内墙的边界(选择图片要着色的部分)
将所需颜色应用到选定区域
第一步是困难的部分。它类似于 Photoshop 的魔术棒工具会做的事情。确实,搜索魔术棒算法会找到一些不错的文章,例如这篇带有 Objective-C 代码的文章。
第二步要容易得多,可以使用CGContextSetBlendMode
和来实现CGContextDrawImage
。
您可以尝试使用kCGBlendModeColor
. 从文档中:
将背景的亮度值与源图像的色调和饱和度值结合使用。此模式保留图像中的灰度级。您可以使用此模式为单色图像着色或为彩色图像着色。
尝试其他混合模式也可以解决问题。有关详细信息,请参阅文档(搜索“kCGBlendMode”)。