首页 > 其他分享 >Pixellib语义分割-图像背景替换

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

时间:2024-06-22 16:21:40浏览次数:7  
标签:bg Pixellib img cv2 image 语义 output 替换 change

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'。

 

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

 

标签:bg,Pixellib,img,cv2,image,语义,output,替换,change
From: https://www.cnblogs.com/wancy/p/18262403

相关文章

  • Java串口框架jSerialComm替换rxtxcomm
    问题最开始使用的是rxtxcomm框架,部署时还要手动放驱动文件,而且后面没有进行维护,导致一些一些新系统不再支持,需要手动打包。<dependency><groupId>org.bidib.jbidib.org.qbang.rxtx</groupId><artifactId>rxtxcomm</artifactId><version>2.2</version><sc......
  • linux - 字符串替换
    使用场景:部署项目的时候,需要统一修改IP地址等内容。缺点:这些命令,都缺少必要的校验功能,容易因为操作失误,会出现未替换,或者替换成空串的情况。比如说:写了好多行的sed命令,不小心删了一行代码,这种情况下,执行代码不会报错,因此很容易埋下安全隐患。推荐:要进行很复杂的替换时,还是......
  • Day 25:1807. 替换字符串中的括号内容
    Leetcode1807.替换字符串中的括号内容给你一个字符串s,它包含一些括号对,每个括号中包含一个非空的键。比方说,字符串“(name)is(age)yearsold”中,有两个括号对,分别包含键“name”和“age”。你知道许多键对应的值,这些关系由二维字符串数组knowledge表示,其......
  • 2024-06-19:用go语言,给定一个起始下标为 0 的整数数组 nums 和一个整数 k, 可以执行一个
    2024-06-19:用go语言,给定一个起始下标为0的整数数组nums和一个整数k,可以执行一个操作将相邻两个元素按位AND后替换为结果。要求在最多执行k次操作的情况下,计算数组中所有元素按位OR后的最小值。输入:nums=[3,5,3,2,7],k=2。输出:3。解释:执行以下操作:1.将nums[0]......
  • Asp.net Core依赖注入(Autofac替换IOC容器)
    ASP.NETCoreASP.NETCore(previouslyASP.NET5)改变了以前依赖注入框架集成进ASP.NET的方法.以前,每个功能-MVC,WebAPI,等.-都有它自己的"依赖解析器(dependencyresolver)"机制并且只是'钩子'钩住的方式有些轻微的区别.ASP.NETCore通过Microsoft.Extensions.......
  • 实体物理音量键替换为home键
    127|YT_r:/#getevent-ladddevice1:/dev/input/event1name:"goodix-ts"adddevice2:/dev/input/event2name:"adc-keys"adddevice3:/dev/input/event0name:"rk805pwrkey"/dev/input/event2:EV_KEY......
  • 国内替换 Confluence 的11款主流选择
    Confluence本身并不是开源的,而是一个基于订阅模式的商业产品。而类似于confluence的有11款知识库软件,包括:PingCode知识库、BlueSpice、MediaWiki、DokuWiki、Nuclino、ClickUp、XWiki、BookStack、TiddlyWiki、Bloomfire和Quip。虽然Confluence常被提及,特别是在团队成......
  • Flink - [05] 时间语义 & Watermark
    题记部分 一、时间语义Flink中的时间语义分为以下,(1)EventTime:事件创建的时间(2)IngestionTime:数据进入Flink的时间(3)ProcessingTime:执行操作算子的本地系统事件,与机器相关 哪种时间语义更重要?不同的时间语义有不同的应用场合,我们往往更关心事件时间(Event Time)某些......
  • 硬核解读KubeEdge基于大模型边云协同的机器人语义分割算法
    本文分享自华为云社区《KubeEdge:基于大模型边云协同的机器人语义分割算法》,作者:云容器大未来。近年来快速发展的视觉大模型(例如SAM)在促进高精度的智能感知方面具有很大的潜力。然而,边缘环境中的资源限制往往会限制这种视觉大模型在本地部署,从而产生相当大的推理延迟,导致难以......
  • 代码随想录刷题记录(7)| 字符串(344.反转字符串,541. 反转字符串II,卡码网:54.替换数字)
    目录(一)反转字符串1.题目描述2.思路3.解题过程(二)反转字符串Ⅱ1.题目描述2.思路3.解题过程(三)替换数字1.题目描述2.思路3.解题过程(一)反转字符串344.反转字符串-力扣(LeetCode)1.题目描述        编写一个函数,其作用是将输入的字符串反转过......