paddlehub和removebg 两个库抠图对比,使用PIL更换背景,同时使用tkinter库进行图形化界面创建。

paddlehub和removebg 两个库抠图对比,使用PIL更换背景,同时使用tkinter库进行图形化界面创建

整个过程中遇到了很多问题,再网上大神们文档指导下,谢了两个种抠图代码。再次非常感谢。

在这里插入图片描述1.左图用的是removebg ,右图使用的是paddlehub。结果看removebg 要好些,但免费次数50次,paddlehub是免费的。
2.作为一个初学者,也算是最简单写项目,用的第三方包,类,函数,循环,字符串,数组,字典,后面图形化用到异常try.可以当成入门第一个小程序联系。
3.昨晚尝试用PyInstaller,生产exe文件生成后。一直无法打开,排查失败原因是,打包时一些库无法miss.例如select win32api 等。最后以失败告终。
4.调试代码中各种报错,报错原因基础不牢靠,路径path理解不够深刻。

以下是removebg,抠图修改背景代码:

代码如下:
# -*- coding: utf-8 -*-
import  os
from removebg import RemoveBg
from PIL import Image
import time
class ChangePic():
#初始化定义removebg API秘钥。path图片的位置
    def __init__(self,key,path):
        self.key=key
        self.path=path
#抠图主函数
    def remove(self):
        rmove = RemoveBg(self.key, 'error.log')
        print(self.path)
        for pic in os.listdir(self.path):
            img_path=os.path.join(self.path,pic)
            rmove.remove_background_from_img_file(img_path)
            print(f'{img_path} is done')
            #('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个,服务器把这个当成了DDOS攻击。
            time.sleep(0.5)
    #TypeError: changeBack() takes 1 positional argument but 2 were given,
    # 主要原因是,在类调用类内部函数时,会自动传入self参数;举个例子如果函数中不写self,那么参数只有x,但是在函数调用是传入参数是(self,x)两个参数,所以函数就会报错。
    def changeBack(self,colar):
        color_dict = {
   'A': (255, 0, 0), 'B': (67, 142, 219), 'C': (255, 255, 255)}
        for pic in os.listdir(self.path):
            img_path = os.path.join(self.path, pic)
            # ValueError: bad transparency mask   Image.open("images/mao.jpg").convert("RGBA")
            print(img_path)
            img1 = Image.open(img_path).convert("RGBA")
            x, y = img1.size
            try:
                p = Image.new('RGBA', img1.size, color=color_dict
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值