导航

人脸美妆

# python环境搭建

# 安装依赖
# yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel gcc gcc-c++ openssl-devel xorg-x11-xauth zlib* libffi-devel wget

# 下载安装包
# wget https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz

# 移动安装包
# mv Python-3.6.6.tar.xz /usr/lib/

# 解压安装包
# xz -d Python-3.6.6.tar.xz
# tar -xvf Python-3.6.6.tar

# 添加配置
# ./configure --prefix=/usr/lib/python3

# 编译安装
# make  && make install

# 创建软连接
# ln -s /usr/lib/python3/bin/python3 /usr/bin/python3
# ln -s /usr/lib/python3/bin/pip3 /usr/bin/pip3

 

# 安装 opencv

# pip3 install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn
# yum install libXrender.x86_64

 

# 安装 face-recognition

# yum install cmake

# yum install boost

# wget https://github.com/xianyi/OpenBLAS/archive/v0.3.7.tar.gz
# tar -zxvf v0.3.7.tar.gz
# cd OpenBLAS
# make && make install

# pip3 install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

# pip3 install face-recognition -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

 

 

# 搭建 web 服务器

# 安装 Django
# pip3 install django==2.1.8 -i https://pypi.tuna.tsinghua.edu.cn/simple/ --trusted-host pypi.tuna.tsinghua.edu.cn

# 创建软连接
# ln -s /usr/lib/python3/bin/django-admin /usr/bin/django-admin

# 创建项目
# django-admin startproject beautymakeup

# 创建App
# django-admin startapp app

 

import os
import urllib
import cv2
import base64
import face_recognition
from django.shortcuts import render
from django.http.response import JsonResponse
from PIL import Image, ImageDraw



def facecosmetic(request):
    # 获取请求参数
    url = request.GET['path']
    cosmetic = int(request.GET['cosmetic'])

    # 获取文件后缀
    filename = os.path.basename(url)
    suffix = '.'+filename.split('.')[1]

    # 保存临时文件
    f = urllib.request.urlopen(url)
    data = f.read()
    with open('./temp'+suffix, "wb") as f:
        f.write(data)

    # opencv 美颜
    image = cv2.imread('./temp'+suffix)
    image = cv2.bilateralFilter(image, 28, 28 * 2, 28 / 2)
    cv2.imwrite('./temp'+suffix, image)

    # face_Recognition 口红
    image = face_recognition.load_image_file("./temp"+suffix)
    face_landmarks_list = face_recognition.face_landmarks(image)
    for face_landmarks in face_landmarks_list:
        pil_image = Image.fromarray(image)
        d = ImageDraw.Draw(pil_image, 'RGBA')
        d.polygon(face_landmarks['top_lip'], fill=(150, 0, 0, cosmetic))
        d.polygon(face_landmarks['bottom_lip'], fill=(150, 0, 0, cosmetic))
        pil_image.show()
        pil_image.save('./temp'+suffix)

    # 返回数据
    with open("./temp"+suffix, 'rb') as f:
        base64_data = base64.b64encode(f.read())
        return JsonResponse(
            {
                'data': base64_data.decode()
            }
        )

posted on 2019-12-16 20:54  stefzi  阅读(468)  评论(0编辑  收藏  举报