python-调用API接口移除照片背景,分分钟变抠图高手

平时生活工作中,会遇到去掉照片背景的需求,如果你是PS高手,可以用ps解决,如果不是呢,或者对去背景的要求不高,还有一些电商平台,产品图必须是白底的,怎么才能快速批量处理呢,一个一个抠图,太慢了。会了python后,调用removebg接口,分分钟帮你去掉大量照片背景。

原理是我们要调用一个API接口,所以在开始前需要先注册一个API接口密钥。
打开网站remove.bg,URL=https://www.remove.bg/
注册一个账户,完成后,点击上面菜单【工具和API】,然后点开下面第三个 【API Integration】API Docs,查看密钥。准备好后,直接上代码吧:

首先要安装removebg库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple removebg

直接从官方下载也可以,但有时候会比较慢,所以上面的安装代码是直接从清华镜像下载,秒速。

from removebg import RemoveBg
import os

rmbg = RemoveBg("这里是刚才注册获取的API密钥,粘进来就可以了", "error.log")
path = '%s/images'%os.getcwd() 
#保存路径,因为我的是在工作区下新建了个images文件夹,用于抠图的,所以路径上添加了images,可以根据自己的情况修改
for pic in os.listdir(path):
#遍历上面目录里的所有照片,循环执行抠图操作
    rmbg.remove_background_from_img_file("%s\%s"%(path,pic))

以上代码运行后,将images里的照片全部处理掉,新生成的照片会在原照片名称后加_no_bg,而且格式为png透明背景的,可以根据自己的需求添加各种背景图。

需要注意的是:免费的api接口处理后的照片会压缩,不是高清图片,如果想要高清图,那就买付费的吧。花钱买时间,也是值得的。

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用Python中的OpenCV和Dlib库来实现自动抠图人脸的功能。以下是一个简单的示例代码: ```python import cv2 import dlib # 加载Haar级联类器,用于检测人脸 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 加载Dlib的人脸检测器和面部标志检测器 detector = dlib.get_frontal_face_detector() predictor = dlib.shape_predictor('shape_predictor_68_face_landmarks.dat') # 加载图像 img = cv2.imread('input.jpg') # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 使用Haar级联类器检测人脸 faces = face_cascade.detectMultiScale(gray, 1.3, 5) # 对每个检测到的人脸进行处理 for (x, y, w, h) in faces: # 使用Dlib人脸检测器检测面部标志 rect = dlib.rectangle(int(x), int(y), int(x + w), int(y + h)) landmarks = predictor(gray, rect) # 提取面部标志中的左眼、右眼、鼻子和嘴巴的坐标 left_eye = (landmarks.part(36).x, landmarks.part(36).y, landmarks.part(39).x, landmarks.part(39).y) right_eye = (landmarks.part(42).x, landmarks.part(42).y, landmarks.part(45).x, landmarks.part(45).y) nose = (landmarks.part(27).x, landmarks.part(27).y, landmarks.part(35).x, landmarks.part(35).y) mouth = (landmarks.part(48).x, landmarks.part(48).y, landmarks.part(54).x, landmarks.part(54).y) # 根据面部标志的坐标抠出人脸 mask = np.zeros_like(gray) cv2.fillPoly(mask, [np.array([left_eye, right_eye, nose, mouth], dtype=np.int32)], 255) masked_img = cv2.bitwise_and(img, img, mask=mask) # 显示结果 cv2.imshow('Input', img) cv2.imshow('Output', masked_img) cv2.waitKey(0) ``` 在上面的代码中,我们首先使用Haar级联类器检测人脸,然后使用Dlib人脸检测器和面部标志检测器提取面部标志的坐标。最后,我们根据面部标志的坐标抠出人脸,并显示结果。注意,需要先安装OpenCV和Dlib库,并下载相应的类器和模型文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tsfy2003

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值