Pixellib语义分割-图像背景替换

1.Pixellib 

  Pixellib 是一个基于 TensorFlow 和 OpenCV 的深度学习库,用于语义分割和实例分割任务,提供了强大的工具和库来构建和训练深度神经网络模型。Pixellib 支持多种主流深度学习模型,如 DeepLabV3、Mask R-CNN、YOLOv4、YOLOv5 和 Panoptic FPN 等

2. 安装

  安装tenforflow:pip3 install tensorflow-gpu或pip3 install tensorflow

  安装Pixellib:pip3 install pixellib

3. 资源地址

  github官网地址: https://github.com/ayoolaolafenwa/PixelLib
  官方文档: https://pixellib.readthedocs.io/en/latest/

  模型权重下载地址: https://github.com/bonlime/keras-deeplab-v3-plus/releases

3.颜色背景替换

import cv2
from pixellib.tune_bg import alter_bg

change_bg = alter_bg()
change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")
output = change_bg.color_bg("sample.jpeg", colors = (0, 128, 0))#将背景置为绿色
cv2.imwrite("img.jpg", output)
new_image = cv2.imread("img.jpg")
# 模糊让边缘更平滑
blurred_image = cv2.GaussianBlur(new_image, (5, 5), 0)
# 保存最终输出图像
cv2.imwrite("img_blur.jpg", blurred_image)

 

                                                                                                                                                                       

                                                   原图                     换背景颜色图

4. 替换背景图片

from pixellib.tune_bg import alter_bg
import cv2
# 创建 alter_bg 实例
change_bg = alter_bg()
# 加载预训练模型
change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")
# # 替换背景
output = change_bg.change_bg_img(f_image_path="sample.jpeg",b_image_path="bg.jpeg", output_image_name="new_img.jpg")
# 加载输出图像
new_image = cv2.imread("new_img.jpg")
#模糊
blurred_image = cv2.GaussianBlur(new_image, (5, 5), 0)
# 保存最终输出图像
cv2.imwrite("final_output.jpg", blurred_image)

                                                                                                                                                         

                                              原图                       换背景图

  上面是网上找的图,再测试一下手机拍的图。

                                                                                                                                                      

5. 虚化背景

from pixellib.tune_bg import alter_bg

# 创建 alter_bg 实例
change_bg = alter_bg()
# 加载预训练模型
change_bg.load_pascalvoc_model("deeplabv3_xception_tf_dim_ordering_tf_kernels.h5")
# 替换背景
output=change_bg.change_bg_img(f_image_path="sample.jpeg",b_image_path="bg.jpeg",output_image_name="new_img.jpg",detect="person")
change_bg.blur_bg("final_output.jpg", extreme=True, detect="person", output_image_name="blur_img.jpg")

小结:对于color_bg函数,可以指定detect参数来获取我们想要分割的目标,默认是模型获取所有目标。如果目标很多,只想要获取人物,可以detect="person'。

 

  不足或错误之处,欢迎指正与评论!

 

posted @ 2024-06-22 16:12  wancy  阅读(50)  评论(0编辑  收藏  举报