最近遇到了一个需求,就是对图片进行色彩风格转换,让一个物体可以以各种不同的色彩来呈现。
比如一个红色的苹果,我想把它转化成绿色,这可怎么办呢?本来想的解决方案是先识别边界,然后对边界内区域进行色彩替换或者填充,这样整个流程就分成了两步,首先需要进行边界判断,有了边界之后才能对某些区域颜色进行替换填充,填充的区域还是不规则的,填充的颜色也需要根据实际的情况来变化,同时还要兼顾阴影、高光等等的处理,想想真是头大。
然后我就突然想到了之前学 PS 的时候,曾经做过对某一张图片进行色调替换,我还记得当时调的内容是「色相」,通过调节这个值可以实现各种色调的转换。这之后我就心想,能不能用程序来做这件事呢?
于是我就开始了对图像色彩的一些研究,研究完了之后就实现了用 Python 来更换图片色调的功能,将这篇文章顺便记录下来。
先给大家看看效果吧,就比如我从百度上随便搜一张图,比如热气球吧,是这样子:
原图
我把它转成红色、黄色、蓝色、紫色,基本就是这个样子:
红色风格
黄色风格
绿色图片
蓝色图片
这里的图片都是经过 Python 自动转换算法实现的,主要调节的就是色相。其实代码实现是比较简单的,但在实现之前需要了解一些图像色彩知识。了解了这些之后我们再实现才会更加游刃有余。
下面我们就首先来了解一下图像色彩的基本知识,然后用 Python 实现色调转换算法吧。
RGB
首先让我们来了解下颜色的三原色,RGB。
RGB,其实就是三种颜色,分别代表红色(Red)、绿色(Green