Python - 重新着色图像

3

请求外部资源(库/工具)被视为离题问题。 - ρss
1
我得到的第一个谷歌搜索结果是http://scikit-image.org/。 - LittlePanda
scikit-image似乎没有EM和GMM函数。也许你是指scikit-learn。然而,我更感兴趣的是如何一般性地解决这个问题,以获得该网页上显示的结果。在另一页上,他们还描述了一种不同的方法——直方图匹配——但由于没有图像,我无法确定结果是否像使用EM/GMM方法那样好。 - n.jmurov
2个回答

2
你需要寻找的关键词是“颜色转换”。我发现这个链接非常有帮助:http://www.pyimagesearch.com/2014/06/30/super-fast-color-transfer-images/ 如果你使用Python,可以像下面这样安装color-transfer库:
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数组类型。


2

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

>>> 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的常见任务,因此有一些良好的教程描述得很好。开始的好地方可能是这个。编写cv::Mat <-> numpy.array的转换器可能是一个问题,但是这里提供了一个简单的解决方案


非常感谢,我想我会尝试第一个选项,因为该文章的一些评论提到了C++代码的编译错误。如果出现这种情况,我不知道如何修复它们。 - n.jmurov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接