当前位置:网站首页>[face recognition series] | realize automatic makeup
[face recognition series] | realize automatic makeup
2022-07-06 04:14:00 【Aasee.】
List of articles
Make up
Today's project is more interesting , Make up the face in the picture [ A bad laugh ], Think about when your girlfriend said that she forgot to apply lipstick and trim her eyebrows when taking photos today , Then you say you come , Give him a boast about the operation results P It's even uglier , This doesn't make lanterns in the toilet – Looking for shit , But don't panic. I'll save you today , Cough, get to the point .
First , We still have to know what functions we need to use first , It mainly uses these two face_landmarks( As mentioned in the last article , But for better experience and faster understanding, I'd better get it for you ),ImageDraw.polygon.
Face feature extraction function ——face_landmarks
face_landmarks( face_image , face_locations=None, model=“large” ) Given an image , Extract the facial feature position of each face in the image Parameters : face_image : Input face image face_locations=None : Optional parameters , The default value is None, Represents everyone's face in the default decoded picture . If input face_locations()[i] You can specify a face to decode model=“large” : Output feature model , The default is “large”, Optional “small”. When the choice is "small" when , Only the left eye is extracted left_eye、 Right eye right_eye、 Nose nose_tip These three facial features .
ImageDraw.polygon
Construct a ImageDraw object : polygon() Method is used to draw polygons : The first parameter is the number of polygons Composed of vertex positions list, The second parameter fill Is the face that fills the polygon color . line() The method is used to draw line segments composed of multiple points , The first parameter is Point position list, The second parameter fill Is the color of the line segment , The third reference Count width Is the width of the line segment .
By using face_landmarks To locate the characteristic face of the face , Use it Image.polygon Draw polygon , Next, the detailed code explanation
Specific code
import face_recognition
from PIL import Image, ImageDraw
def demoFunc2(pic_path):
# Load the picture as numpy Array
image = face_recognition.load_image_file(pic_path)
face_landmarks_list = face_recognition.face_landmarks(image)
print(f"I found {
len(face_landmarks_list)} face<s> in this photograph."))
pil_image = Image.fromarray(image)
# Traverse the face , draw
for face_landmarks in face_landmarks_list:
demo = ImageDraw.Draw(pil_image, 'RGBA')
demo.polygon(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 128))
demo.polygon(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 128))
# demo.line(face_landmarks['left_eyebrow'], fill=(68, 54, 39, 150), width=2)
# demo.line(face_landmarks['right_eyebrow'], fill=(68, 54, 39, 150), width=2)
demo.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, 128))
# demo.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128))
demo.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, 128))
# demo.line(face_landmarks['top_lip'], fill=(150, 0, 0, 64), width=2)
# demo.line(face_landmarks['bottom_lip'], fill=(150, 0, 0, 64), width=2)
demo.polygon(face_landmarks['left_eye'], fill=(255, 255, 255, 30))
demo.polygon(face_landmarks['right_eye'], fill=(255, 255, 255, 30))
# pil_image.save("1_.jpg") # have access to save Method to save
pil_image.show()
demoFunc2("6.png")
I found the use of line The method is a little strange after tracing , So I made a deletion here , You can also try it yourself , The color can also follow RGBA Try to change by yourself , I continue to use Peng Yuyan here to show you haha
Result display
At the same time, I also packed it to my github In the , If you want to play, you can also download it directly .
边栏推荐
- 绑定在游戏对象上的脚本的执行顺序
- Global and Chinese market of rubber wheel wedges 2022-2028: Research Report on technology, participants, trends, market size and share
- MLAPI系列 - 04 - 网络变量和网络序列化【网络同步】
- Global and Chinese market of aircraft anti icing and rain protection systems 2022-2028: Research Report on technology, participants, trends, market size and share
- Deep learning framework installation (tensorflow & pytorch & paddlepaddle)
- How many of the 10 most common examples of istio traffic management do you know?
- Unity中几个重要类
- 10個 Istio 流量管理 最常用的例子,你知道幾個?
- 软考 系统架构设计师 简明教程 | 总目录
- [FPGA tutorial case 11] design and implementation of divider based on vivado core
猜你喜欢
Detailed explanation of serialization and deserialization
MLAPI系列 - 04 - 网络变量和网络序列化【网络同步】
Interface idempotency
[disassembly] a visual air fryer. By the way, analyze the internal circuit
SSTI template injection explanation and real problem practice
颠覆你的认知?get和post请求的本质
User datagram protocol UDP
Tips for using dm8huge table
MySQL learning record 13 database connection pool, pooling technology, DBCP, c3p0
自动化测试的好处
随机推荐
Understanding of processes, threads, coroutines, synchronization, asynchrony, blocking, non blocking, concurrency, parallelism, and serialization
2/10 parallel search set +bfs+dfs+ shortest path +spfa queue optimization
80% of the diseases are caused by bad living habits. There are eight common bad habits, which are both physical and mental
Several important classes in unity
20、 EEPROM memory (AT24C02) (similar to AD)
判断当天是当月的第几周
51nod 1130 n factorial length V2 (Stirling approximation)
Simple blog system
Path of class file generated by idea compiling JSP page
Tips for using dm8huge table
Fedora/REHL 安装 semanage
综合能力测评系统
Ipv4中的A 、B、C类网络及子网掩码
Database, relational database and NoSQL non relational database
Yyds dry goods inventory hcie security Day11: preliminary study of firewall dual machine hot standby and vgmp concepts
CertBot 更新证书失败解决
VPP性能测试
BOM - location, history, pop-up box, timing
[introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
深入浅出node模板解析错误escape is not a function