使用OpenCV和Python将图像的分段部分替换为其他图像

时间:2018-12-26 09:01:01

标签: python opencv object-detection object-recognition image-replacement

我想用另一张图像替换图像的一部分。我能够将图像分割成各自的类别,例如,在图像链接中,已使用纯色对鹰的图像进行了分割,以区分对象和背景。

Original Photo
Segmented Photo

是否有适合我进行实验的算法,可以按颜色检测对象并执行对象替换?例如,我想用另一种鸟替换这只鹰(是否有办法调整新图像的大小以适合图像的当前分割部分?)。

我对这个概念还很陌生,因此任何反馈将不胜感激!我绝不是在寻求解决方案,我只是在寻找一个起点(算法,示例代码,教程等)供我进一步探索。非常感谢。

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以使用此deeplab v3模型,该模型接受了数千张图像的训练,可以正确分割任何常见的对象(在您的情况下为鸟类)。这将为您提供蒙版图像。

Segmentation example

现在,如果您尝试仅裁剪前景并将其覆盖在任何其他背景上,则只需使用opencv's seamless clone即可轻松完成。这使得替换看起来很自然。

Source Result

但是,如果您尝试仅修剪背景并换成另一只鸟,我认为可能会有些棘手。因为您需要先删除那只鸟,并用可能的背景替换它,然后再放置另一只鸟。

我希望您可以在这里开始自己的旅程,并不断改善。