此功能类似P图,将固定颜色的背景通过HSV阈值调节,扣出人物的区域(mask),并通过位操作实现风景照与mask的融合,最后经过同样的操作将人物图像扣除,通过cv2.add()或cv2.addWeighted()实现图片的叠加,当然要注意图片的尺寸问题哦~
在这个过程中,感谢锟琨的帮助!
文章目录
- 功能介绍
- 实现过程
- 1.读取两张图片并建立显示窗口
- 2.通过HSV调节,提取出背景颜色的阈值范围并记录在color_dist里
- 使用HSV阈值调节器实现阈值调节
- 3.提取背景和人物的二值化区域
- 4.通过位操作实现掩膜处理
- 5.叠加两张照片
- 如何将人像放在白色或其他颜色的背景上?
- 1.创建白色的背景图片
- 2.采用人像mask对白色背景进行掩膜处理
功能介绍
- 将
img1
中的人物和img2
的背景进行叠加,实现融合P图的效果: - 实现效果:
实现过程
1.读取两张图片并建立显示窗口
注意,此处需要将两张照片的size
调成相同的
2.通过HSV调节,提取出背景颜色的阈值范围并记录在color_dist里
使用HSV阈值调节器实现阈值调节
HSV高低阈值分析器
3.提取背景和人物的二值化区域
将人物的调节后的二值化图片和原图进行掩膜处理,分别提取出人物和背景的画面
- 将背景的
mask
提取出来
- 将像素反转,得到人物的mask
4.通过位操作实现掩膜处理
- 将背景和人物分别进行掩膜处理,实现人物和背景的单独显示
5.叠加两张照片
- 通过cv2.add()实现照片的叠加
- 通过cv2.addWeighted()实现可调节透明度的叠加
如何将人像放在白色或其他颜色的背景上?
紧跟着上述的操作:
1.创建白色的背景图片
2.采用人像mask对白色背景进行掩膜处理
- 使用人像mask对白底照片进行掩膜处理
注意:黑色区域为此二值化照片可以使用其他照片进行覆盖的区域!!
- 将人像与经过掩膜处理的白底照片进行融合
如果读者跟着博主实现了功能,那就给个赞再走吧~