当前位置:网站首页>[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 .
边栏推荐
- IDEA编译JSP页面生成的class文件路径
- asp. Core is compatible with both JWT authentication and cookies authentication
- Use js to complete an LRU cache
- Lombok原理和同时使⽤@Data和@Builder 的坑
- Tips for using dm8huge table
- Yyds dry goods inventory web components series (VII) -- life cycle of custom components
- Global and Chinese markets for otolaryngology devices 2022-2028: Research Report on technology, participants, trends, market size and share
- 20、 EEPROM memory (AT24C02) (similar to AD)
- Solution to the problem that the root account of MySQL database cannot be logged in remotely
- Script lifecycle
猜你喜欢
![[PSO] Based on PSO particle swarm optimization, matlab simulation of the calculation of the lowest transportation cost of goods at material points, including transportation costs, agent conversion cos](/img/41/27ce3741ef29e87c0f3b954fdef87a.png)
[PSO] Based on PSO particle swarm optimization, matlab simulation of the calculation of the lowest transportation cost of goods at material points, including transportation costs, agent conversion cos

R note prophet

Record the pit of NETCORE's memory surge

Chinese brand hybrid technology: there is no best technical route, only better products

DM8 archive log file manual switching

math_ Derivative function derivation of limit & differential & derivative & derivative / logarithmic function (derivative definition limit method) / derivative formula derivation of exponential functi

Fundamentals of SQL database operation

绑定在游戏对象上的脚本的执行顺序

About some basic DP -- those things about coins (the basic introduction of DP)

电脑钉钉怎么调整声音
随机推荐
Determine which week of the month the day is
Yyds dry goods inventory hcie security Day11: preliminary study of firewall dual machine hot standby and vgmp concepts
Thread sleep, thread sleep application scenarios
How does technology have the ability to solve problems perfectly
Yyds dry goods inventory web components series (VII) -- life cycle of custom components
[adjustable delay network] development of FPGA based adjustable delay network system Verilog
2/12 didn't learn anything
During pycharm debugging, the view is read only and pause the process to use the command line appear on the console input
Global and Chinese market of rubber wheel wedges 2022-2028: Research Report on technology, participants, trends, market size and share
Path of class file generated by idea compiling JSP page
2/13 qaq~~ greed + binary prefix sum + number theory (find the greatest common factor of multiple numbers)
[introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
VPP性能测试
Global and Chinese market of plasma separator 2022-2028: Research Report on technology, participants, trends, market size and share
ESP32_ FreeRTOS_ Arduino_ 1_ Create task
In Net 6 CS more concise method
Tips for using dm8huge table
P3033 [usaco11nov]cow steelchase g (similar to minimum path coverage)
Deep learning framework installation (tensorflow & pytorch & paddlepaddle)
What is the difference between gateway address and IP address in tcp/ip protocol?