技术标签: python 精彩技术文 人工智能 前端 后端 开发语言
好友 A:橡皮擦,可否提供网页,上传带人像的图片,然后可以直接抠图,最好直接生成 PNG 图片下载。
橡皮擦:每天需要调用多少次?
好友 A:大概 100 次吧。
橡皮擦:妥了,给你写个免费的吧。
本案例的实战需求是对图片进行抠图,每日请求量为 100,来源依旧是好友求助,既然日请求量不大,那某智能云的人像分隔接口就可以使用了,申请之后,其赠送了 10000 次,每秒限制 2 次请求,足够使用。
从官方下载 Python API SDK 之后,得到下图所示目录:
然后进入该目录执行下述命令安装 SDK
python setup.py build
python setup.py install
安装成功之后就可以通过 pip list
查看相关数据。
接下来需要创建一个 AipBodyAnalysis
,该对象是后续处理人像分析的核心对象。
新建 show_people.py
文件,输入如下代码:
from aip import AipBodyAnalysis
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
其中 App ID
,Api Key
,Secret Key
都需要提前在平台方申请使用。
接下来就可以使用人像分隔主体函数了,代码如下:
client = AipBodyAnalysis(APP_ID, API_KEY, SECRET_KEY)
""" 读取图片 """
def get_file_content(filePath):
with open(filePath, 'rb') as fp:
return fp.read()
image = get_file_content('./demo.png')
""" 调用人像分割 """
ret = client.bodySeg(image)
print(ret)
代码用到的测试图为:
运行后提示 ModuleNotFoundError: No module named 'chardet'
,使用 pip install chardet
安装缺少模块。
上述 client.bodySeg(image)
函数的参数如下所示:
image
:图像数据,base64 编码,要求 base64 编码后大小不超过 4M,最短边至少 15px,最长边最大 4096px,支持 jpg/png/bmp 格式;type
:可以通过设置 type 参数,自主设置返回哪些结果图,避免造成带宽的浪费
基于上述配置,在方法调用时添加参数,获取人像前景抠图。
""" 如果有可选参数 """
options = {
}
options["type"] = "foreground"
""" 带参数调用人像分割 """
ret = client.bodySeg(image, options)
print(ret)
返回参数列表如下所示:
labelmap
:分割结果图片,base64 编码之后的二值图像,需二次处理方能查看分割效果scoremap
:分割后人像前景的 scoremap,归一到 0-255,不用进行二次处理,直接解码保存图片即可。Base64 编码后的灰度图文件,图片中每个像素点的灰度值 = 置信度 * 255,置信度为原图对应像素点位于人体轮廓内的置信度,取值范围[0, 1]foreground
:分割后的人像前景抠图,透明背景,Base64 编码后的 png 格式图片,不用进行二次处理,直接解码保存图片即可。将置信度大于 0.5 的像素抠出来,并通过 image matting 技术消除锯齿person_num
:检测到的人体框数目person_info
:人体框信息此时输出 person_num
就可以获得人像数量,测试代码如下所示。
ret = client.bodySeg(image, options)
print(ret["person_num"]) # 输出 1
接下来直接保存前景抠图,导入 base64 模块,直接解码保存即可。
""" 带参数调用人像分割 """
ret = client.bodySeg(image, options)
data = ret["foreground"]
data = base64.b64decode(data)
# 生成图片
with open("./fore.png",'wb') as f:
f.write(data)
最后在使用一张复杂些的图片进行测试,背景去除的非常干净。
你正在阅读 【梦想橡皮擦】 的博客
阅读完毕,可以点点小手赞一下
发现错误,直接评论区中指正吧
橡皮擦的第 713 篇原创博客
从订购之日起,案例 5 年内保证更新
http://blog.codingmylife.com/?p=40属性是一种定义类所提供的数据的通常方法。在Movie这个类里,诸如“标题”,“工作室”和“发布年份”等等都算是属性。这里是用Objective-C 1.x语法定义的Movie类: 123456789101112131415161718...
欢迎关注博主主页,学习python视频资源https://blog.csdn.net/q383700092/article/details/53763328调参后结果非常理想from sklearn.model_selection import GridSearchCVfrom sklearn.datasets import load_breast_cancerfrom x...
安卓逆向 协议 wtoken ibox
Java代码package test49;//package com.color.io; /* * Main.java * * Created on 2000年9月29日, 下午5:17 * * To change this template, choose Tools | Template Manager * and open the template in the edito
---------- android培训 、java培训、期待与您交流! ---------- ---------- android培训、 java培训、期待与您交流!----------黑马官网: http://edu.csdn.net/heima
查看全部教程开发请点击:高通蓝牙耳机QCC304x开发详解汇总(持续更新中)1、什么是语音助手?这里的语音助手主要指的是手机自带的语音助手功能(例如hi siri,或者小爱同学等)。通过语音助手可以实现拨打电话,查询天气等等,是一个解放双手非常方便的功能。2、调用蓝牙耳机的语音助手功能首先手机支持语音助手功能并且打开了语音助手功能。(1)高通这个系列蓝牙耳机的语音助手UI是ui_input_voice_dial(2)语音助手实现的逻辑通过ui_input_v...
「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道。风里雨里,我们将每天为朋友们,播报最新鲜有料的新闻资讯,让所有技术人,时...
1,基本介绍Restful接口的调用,前端一般使用ajax调用,后端可以使用的方法比较多, 本次介绍三种: 1.HttpURLConnection实现 2.HttpClient实现 3.Spring的RestTemplate 2,HttpURLConnection实现[java] view plain copy [email protected] public c
硬件及环境:2070s+win10+py3.6+tensorflow-gpu 2.4.0+cuda11.1问题:检查tf-gpu版本以及可用性时出现缺失cusolver64_10.dll的情况import tensorflow as tf# 打印当前版本print(tf.__version__)# 打印gpu是否可用print(tf.test.is_gpu_available())2021-03-04 10:12:07.170133: I tensorflow/stream_
首先导入依赖api 'com.umeng.sdk:common:latest.integration'api 'com.umeng.sdk:analytics:latest.integration'在根gradle , repositories 和 allprojects中加入maven { url ‘https://dl.bintray.com/umsdk/release’ }...
那有没有办法弄一个既方便又兼容又友爱的Bubble气泡提示框呢?答案是可以的,而且就用纯CSS来来实现,当然在没出效果之前你有权去怀疑这件事情,但出了效果后,你必须坚定的认识:楼主是老实人,出家人是不打诳语的。其实呢这个方法是我以前收藏在另一个博客中的,现在为了能让更多的朋友方便地使用,就分享到博客园吧。无论你是否用得到,我都感谢你抽空来临幸我这篇文章。首先我们来定义一组CSS样式,用来描述bub...
问题描述在某一次更新prettier插件后,发现格式化不起作用了,在vscode用户配置中怎么设置都没有效果解决方法由于prettier插件优先使用项目根目录下的editorconfig配置文件,所以在vscode中怎么配置有没有用,如下图进入插件配置界面取消Use Editor Config的复选框,这样就不会优先使用editorconfig配置文件了你可以在项目根目录创建一个.prettierrc.js配置文件,prettier会自动检测到,也可以手动配置也可以使用vscode