zoukankan      html  css  js  c++  java
  • python3抠图并更换背景

    继上次博客opencv入门之RGB转HSV并更换背景手动抠图之后,今天偶然看到这篇博客利用了百度的paddlepaddle平台实现AI抠图,这就是所谓的“大人,时代变了!”。
    于是使用本人上次博客的图片,如下
    在这里插入图片描述
    安装之后运行以下代码(图片存入当前目录的figs文件夹中):

    import os, paddlehub as hub
    humanseg = hub.Module(name='deeplabv3p_xception65_humanseg')		# 加载模型
    path = './figs/'	# 文件目录
    files = [path + i for i in os.listdir(path)]	# 获取文件列表
    print(files)
    results = humanseg.segmentation(data={'image':files})	# 抠图
    

    发现得到的是空白图片,定睛一看原来这个模块是抠人的而我这个却是个狗熊。
    于是又参考了两篇三行python代码带你抠图和python抠图和添加背景颜色利用了 removebg模块,代码如下(图片名字为"1.png",在当前目录下,结果会生成一个透明背景和纯色背景的图片):

    from removebg import RemoveBg
    from PIL import Image
    import os
    
    #changebg: 调用PIL添加背景颜色
    def changebg(img,color):
    
        color_dict = {"A":(255,0,0),"B":(67,142,219),"C":(255,255,255)} # A:red B:bule C:white D:justremovebg
        im = Image.open(img)
        x,y =im.size
        try:
            p = Image.new('RGBA', im.size,color=color_dict.get(color))
            p.paste(im,(0, 0, x, y), im)
            p.save('{}.png'.format('new'+color))
        except:
            print('changebg err')
            pass
    rmbg = RemoveBg("UiwiP9dQj53v693md9UyEyZz", "error.log")
     
    #获取单个照片的抠图   XKMh1J7geGfnGY9CFu9zXV8f
     
    rmbg.remove_background_from_img_file("./1.png") #图片地址
    option = 'B' #蓝色
    changebg('1.png_no_bg.png',option)
     
     
    #批量获取抠图信息
    #path = '%s/picture' % os.getcwd()
    #for pic in os.listdir(path):
     #   rmbg.remove_background_from_img_file("%s/%s" % (path, pic))
    

    因为代码比较简单,所以直接搬运没有整理,结果如下:
    在这里插入图片描述

  • 相关阅读:
    [Qt] 事件机制(四)
    shell专题(六):条件判断
    最小生成树
    373. Find K Pairs with Smallest Sums
    gradle代理设置
    266. Palindrome Permutation
    53. Maximum Subarray
    378. Kth Smallest Element in a Sorted Matrix
    240. Search a 2D Matrix II
    74. Search a 2D Matrix
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13281674.html
Copyright © 2011-2022 走看看