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'。
不足或錯誤之處,歡迎指正與評論!