python - 重新着色图像

时间:2015-04-24 08:18:25

标签: python opencv image-processing expectation-maximization

我想实现一个图像重新着色算法,以产生类似于此处所示的结果:

http://www.morethantechnical.com/2010/06/24/image-recoloring-using-gaussian-mixture-model-and-expectation-maximization-opencv-wcode/

但使用Python。但是,我不知道从哪里开始。我一直在玩OpenCV,但文章中提到的功能(期望最大化和GMM)似乎不适用于Python API。能否指出我应该使用哪些工具/库?

2 个答案:

答案 0 :(得分:2)

您正在寻找的关键词是"颜色转移"。我发现此链接非常有用http://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/

用于Python安装颜色转移库,如此;

pip install color_transfer

使用:

import color_transfer

destination_image = ...  # import your destination image here
source_image = ....  # import your source image here

new_image = color_transfer.color_transfer(source_image, destination_image)

源图像和目标图像都应为Numpy数组类型。

答案 1 :(得分:1)

第一个选项是在Python中实现此代码。看起来文章中提到的所有函数都可以在Python API中使用。 CvEM只是EM(在模块cv2中):

>>> cv2.EM.__doc__
'EM([, nclusters[, covMatType[, termCrit]]]) -> <EM object>'

没有CvEMParams,因为EM已经处理过它。如果您正在寻找任何其他函数/对象,请在Python控制台中键入dir(cv2),您很可能会找到所需内容。很多时候,Python API中的内容略有不同,但找到它们仍然不是一个大问题。请注意,某些内容也可能位于cv2.cv模块中。

第二个选项就是使用这个C ++代码并从Python中调用它。为Python编写扩展并不是一件容易的事,但如果你使用Boost.Python,那应该不是很难。编写扩展模块是Boost.Python非常流行的任务,因此有一些很好的教程可以很好地描述。开始的好点可能是this one。为cv :: Mat&lt; - &gt; numpy.array编写转换器可能有问题,但这里很容易solution