本地(Window和Linux)搭建AI证件照制作工具教程,亲测可使用

介绍

我使用的工具就是HivisionIDPhoto。
HivisionIDPhoto是一套完善的模型工作流程,实现对多种用户拍照场景的识别、抠图与证件照生成。

HivisionIDPhoto特色:
轻量级抠图
根据不同尺寸规格生成不同的标准证件照、六寸排版照
能美颜,可调节美颜参数
易于集成,官方提供了清晰的 API 文档和示例代码,方便开发者快速集成到自己的项目中
跨平台支持:无论是 Windows、macOS 还是 Linux 用户都能轻松使用
生成结果直接下载打印,方便快捷

使用案例

在这里插入图片描述

可调参数等等
在这里插入图片描述
支持多种尺寸
在这里插入图片描述

Window安装(不推荐)

Window安装总是有莫名其妙的错误,推荐建个虚拟机使用Docker安装
安装前提:
有python环境,版本大于3.10,但不建议使用最新版本,建议使用稳定版
1.克隆或者下载HivisionIDPhoto代码(文末附网盘地址)

git clone https://github.com/Zeyi-Lin/HivisionIDPhotos.git

2.进入代码所在目录打开CMD
执行命令安装依赖

pip install -r requirements.txt
pip install -r requirements-app.txt

安装慢的话指定一个镜像源

pip install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
pip install -r requirements-app.txt -i https://mirrors.aliyun.com/pypi/simple/

在这里插入图片描述

两个命令都执行成功就可以往下了
在这里插入图片描述

3.下载权重文件并放到权重文件夹
下载地址(网盘里也有),文件名hivision_modnet.onnx

https://github.com/Zeyi-Lin/HivisionIDPhotos/releases/tag/pretrained-model
liangg

在这里插入图片描述

4.运行demo

python app.py

启动成功后,浏览器访问:http://localhost:7860
在这里插入图片描述

在这里插入图片描述

搞定

5.运行 API 后端服务
接口访问示例及接口文档往下看

python deploy_api.py

docker安装(强烈推荐)

  1. 拉取镜像
docker pull linzeyi/hivision_idphotos
  1. 运行官方Demo
docker run -d \
-p 7860:7860 \
--name hivision-idphotos \
linzeyi/hivision_idphotos

搞定,直接访问,本地访问 http://127.0.0.1:7860 即可,其他的ip+端口即可。
在这里插入图片描述

3.启动API后端服务(如果需要)

docker run -d \
 -p 8080:8080 \
 -name hivision-idphotos-api \
 linzeyi/hivision_idphotos python3 deploy_api.py

官方API接口文档

1.生成证件照(底透明)

接口名:idphoto

生成证件照接口的逻辑是发送一张 RGB 图像,输出一张标准证件照和一张高清证件照:

  • 高清证件照:根据size的宽高比例制作的证件照,文件名为output_image_dir增加_hd后缀
  • 标准证件照:尺寸等于size,由高清证件照缩放而来,文件名为output_image_dir

需要注意的是,生成的两张照片都是透明的(RGBA 四通道图像),要生成完整的证件照,还需要下面的添加背景色接口。

问:为什么这么设计?
答:因为在实际产品中,经常用户会频繁切换底色预览效果,直接给透明底图像,由前端 js 代码合成颜色是更好体验的做法。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGB三通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGB三通道图像。
heightint标准证件照高度,默认为413
widthint标准证件照宽度,默认为295
human_matting_modelstr人像分割模型,默认为modnet_photographic_portrait_matting。可选值为modnet_photographic_portrait_mattinghivision_modnetrmbg-1.4birefnet-v1-lite
face_detect_modelstr人脸检测模型,默认为mtcnn。可选值为mtcnnface_plusplusretinaface-resnet50
hdbool是否生成高清证件照,默认为true
dpiint图像分辨率,默认为300
face_alignmentbool是否进行人脸对齐,默认为true
head_measure_ratiofloat面部面积与照片面积的比例,默认为0.2
head_height_ratiofloat面部中心与照片顶部的高度比例,默认为0.45
top_distance_maxfloat头部与照片顶部距离的比例最大值,默认为0.12
top_distance_minfloat头部与照片顶部距离的比例最小值,默认为0.1
brightness_strengthfloat亮度调整强度,默认为0
contrast_strengthfloat对比度调整强度,默认为0
sharpen_strengthfloat锐化调整强度,默认为0
saturation_strengthfloat饱和度调整强度,默认为0

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64_standardstr标准证件照的base64编码
image_base64_hdstr高清证件照的base64编码。如hd参数为false,则不返回该参数

2.添加背景色

接口名:add_background

添加背景色接口的逻辑是接收一张 RGBA 图像(透明图),根据color添加背景色,合成一张 JPG 图像。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGBA四通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGBA四通道图像。
colorstr背景色HEX值,默认为000000
kbint输出照片的 KB 值,默认为None,即不对图像进行KB调整。
renderint渲染模式,默认为0。可选值为012,分别对应纯色上下渐变中心渐变
dpiint图像分辨率,默认为300

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str添加背景色之后的图像的base64编码

3.生成六寸排版照

接口名:generate_layout_photos

生成六寸排版照接口的逻辑是接收一张 RGB 图像(一般为添加背景色之后的证件照),根据size进行照片排布,然后生成一张六寸排版照。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGB三通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGB三通道图像。
heightint输入图像的高度,默认为413
widthint输入图像的宽度,默认为295
kbint输出照片的 KB 值,默认为None,即不对图像进行KB调整。
dpiint图像分辨率,默认为300

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str六寸排版照的base64编码

4.人像抠图

接口名:human_matting

人像抠图接口的逻辑是接收一张 RGB 图像,输出一张标准抠图人像照和高清抠图人像照(无任何背景填充)。

请求参数:

参数名类型必填说明
input_imagefile传入的图像文件,图像文件为需为RGB三通道图像。
human_matting_modelstr人像分割模型,默认为modnet_photographic_portrait_matting。可选值为modnet_photographic_portrait_mattinghivision_modnetrmbg-1.4birefnet-v1-lite
dpiint图像分辨率,默认为300

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str抠图人像照的base64编码

5.图像加水印

接口名:watermark

图像加水印接口的功能是接收一个水印文本,然后在原图上添加指定的水印。用户可以指定水印的位置、透明度和大小等属性,以便将水印无缝地融合到原图中。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGB三通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGB三通道图像。
textstr水印文本,默认为Hello
sizeint水印字体大小,默认为20
opacityfloat水印透明度,默认为0.5
angleint水印旋转角度,默认为30
colorstr水印颜色,默认为#000000
spaceint水印间距,默认为25
dpiint图像分辨率,默认为300

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str添加水印之后的图像的base64编码

6.设置图像KB大小

接口名:set_kb

设置图像KB大小接口的功能是接收一张图像和目标文件大小(以KB为单位),如果设置的KB值小于原文件,则调整压缩率;如果设置的KB值大于源文件,则通过给文件头添加信息的方式调大KB值,目标是让图像的最终大小与设置的KB值一致。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGB三通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGB三通道图像。
kbint输出照片的 KB 值,默认为None,即不对图像进行KB调整。
dpiint图像分辨率,默认为300

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str设置KB大小之后的图像的base64编码

7.证件照裁切

接口名:idphoto_crop

证件照裁切接口的功能是接收一张 RBGA 图像(透明图),输出一张标准证件照和一张高清证件照。

请求参数:

参数名类型必填说明
input_imagefileinput_image_base64二选一传入的图像文件,图像文件为需为RGBA四通道图像。
input_image_base64strinput_image二选一传入的图像文件的base64编码,图像文件为需为RGBA四通道图像。
heightint标准证件照高度,默认为413
widthint标准证件照宽度,默认为295
face_detect_modelstr人脸检测模型,默认为mtcnn。可选值为mtcnnface_plusplusretinaface-resnet50
hdbool是否生成高清证件照,默认为true
dpiint图像分辨率,默认为300
head_measure_ratiofloat面部面积与照片面积的比例,默认为0.2
head_height_ratiofloat面部中心与照片顶部的高度比例,默认为0.45
top_distance_maxfloat头部与照片顶部距离的比例最大值,默认为0.12
top_distance_minfloat头部与照片顶部距离的比例最小值,默认为0.1

返回参数:

参数名类型说明
statusint状态码,true表示成功
image_base64str证件照裁切之后的图像的base64编码
image_base64_hdstr高清证件照裁切之后的图像的base64编码,如hd参数为false,则不返回该参数

请求示例

使用apifox请求==》生成证件照(底透明)示例
在这里插入图片描述
在这里插入图片描述

// 将接口返回数据封装成所需的结构
var resp = {
    image_base64_standard: pm.response.json().image_base64_standard
}
// HTML 模板字符串
var template = `
<html>
    <img src="{{image_base64_standard}}" />
</html>
`;

// 设置可视化数据,传入模板和解析对象
pm.visualizer.set(template, resp);

在这里插入图片描述
点击请求结果中的Visualize即可查看
在这里插入图片描述

云盘资料

链接: https://pan.baidu.com/s/17Z2vf1RrLlvvVO7zsL45Bg?pwd=ng66 提取码: ng66

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值