我想实现一个图像重新着色算法,以产生类似于此处所示的结果:
但使用Python。但是,我不知道从哪里开始。我一直在玩OpenCV,但文章中提到的功能(期望最大化和GMM)似乎不适用于Python API。能否指出我应该使用哪些工具/库?
答案 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。