当前位置:网站首页>Using U2 net deep network to realize -- certificate photo generation program
Using U2 net deep network to realize -- certificate photo generation program
2022-07-07 10:29:00 【Happy border town】
Results the preview :http://map.gnnu.work/rm21/qy/profilepicture
Use to :
1.pytorch Load split model
2.PIL More convenient to operate images
2.U2-net The network separates the contour of the portrait from the image
The specific implementation steps are as follows :
1. The original picture
The original picture
2. Get from the original picture Alpha chart
# Get from the original picture Alpha chart org: Path of original graph Return what you get Alpha chart
def seg_trimap(org):
image = Image.open(org)
img = np.array(image)
net = pre_net()
inputs_test = pre_test_data(img)
d1, d2, d3, d4, d5, d6, d7 = net(inputs_test)
# normalization
pred = d1[:, 0, :, :]
pred = normPRED(pred)
# Convert data into pictures
im = get_im(pred)
# im.save(alpha)
sp = image.size
# Adjust the size according to the original picture
imo = im.resize((sp[0], sp[1]), resample=Image.BILINEAR)
imo.save("alpha_resize111.jpg")
return imo
return imo
Alpha chart
3. take Alpha Turn the picture into trimap chart
def to_standard_trimap(alpha):
# Alpha Graph generation trimap
# image = Image.open(alpha)
image = alpha;
# image = image.convert("P")
# image_file.save('resize_trimap.png')
sp = image.size
width = sp[0]
height = sp[1]
for yh in range(height):
for xw in range(width):
dot = (xw, yh)
color_d_arr = image.getpixel(dot)
color_d=color_d_arr[0]
if 0 < color_d <= 60:
image.putpixel(dot, (0,0,0))
if 60 < color_d <= 200:
image.putpixel(dot, (128,128,128))
if 200 < color_d <= 255:
image.putpixel(dot, (255,255,255))
image.save("trimap1111.jpg")
return image
trimap chart
4. Through the original figure and trimap Figure combines the background color to generate the final result
def to_background(org, resize_trimap, id_image, color):
"""
org: Original picture
resize_trimap:trimap
id_image: New picture
color: The background color
"""
scale = 1.0
image = load_image(org, "RGB", scale, "box")
trimap = load_image(resize_trimap, "GRAY", scale, "nearest")
im = Image.open(org)
# estimate alpha from image and trimap
try:
alpha = estimate_alpha_cf(image, trimap)
except:
print(" abnormal ")
print(org)
a = "-1"
return a
new_background = Image.new('RGB', im.size, color_dict[color])
new_background.save("bj.png")
# load new background
new_background = load_image("bj.png", "RGB", scale, "box")
# estimate foreground from image and alpha
foreground, background = estimate_foreground_ml(image, alpha, return_background=True)
# blend foreground with background and alpha
new_image = blend(foreground, new_background, alpha)
save_image(id_image, new_image)
return id_image
Result chart
thus , The function of generating solid color ID photos has been realized .
Next use Vue Write a program interface to provide user interaction , Because the ID photo has a specific size , With the help of vue-croppe It allows users to cut the solid color certificate photo into one inch or two inches at the front end .
There are too many codes to show , You need to jump to the end of the text to get the source code .
The interface implementation effect is as follows :
Source code is as follows :
Back end :https://github.com/QiuYang01/profilepicture-server
front end :https://github.com/QiuYang01/profilepicture-client
边栏推荐
- JMeter about setting thread group and time
- 【acwing】789. Range of numbers (binary basis)
- IPv4套接字地址结构
- SolidWorks工程图中添加中心线和中心符号线的办法
- 宁愿把简单的问题说一百遍,也不把复杂的问题做一遍
- The Hal library is configured with a general timer Tim to trigger ADC sampling, and then DMA is moved to the memory space.
- STM32 product introduction
- [second on] [jeecgboot] modify paging parameters
- Study summary of postgraduate entrance examination in July
- Appx code signing Guide
猜你喜欢
LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件
STM32 Basics - memory mapping
成为优秀的TS体操高手 之 TS 类型体操前置知识储备
P1223 排队接水/1319:【例6.1】排队接水
[sword finger offer] 42 Stack push in and pop-up sequence
【剑指Offer】42. 栈的压入、弹出序列
[second on] [jeecgboot] modify paging parameters
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
Use of JSON extractor originals in JMeter
Prototype object in ES6
随机推荐
Elegant controller layer code
Serial communication relay Modbus communication host computer debugging software tool project development case
Easyexcel read write simple to use
Study summary of postgraduate entrance examination in November
基于HPC场景的集群任务调度系统LSF/SGE/Slurm/PBS
When there are pointer variable members in the custom type, the return value and parameters of the assignment operator overload must be reference types
php \n 换行无法输出
Postman interface test II
JMeter about setting thread group and time
Guide de signature du Code Appx
PDF文档签名指南
EasyExcel读取写入简单使用
High number_ Chapter 1 space analytic geometry and vector algebra_ Quantity product of vectors
Use of JSON extractor originals in JMeter
基于gis三维可视化技术的智慧城市建设
AHB bus in stm32_ Apb2 bus_ Apb1 bus what are these
Postman interface test IV
嵌入式工程师如何提高工作效率
MCU is the most popular science (ten thousand words summary, worth collecting)
STM32 product introduction