基于人脸识别的发型推荐系统代码实现

本文介绍了如何利用Python和Face++API实现一个发型推荐系统,包括用户上传照片、人脸识别、性别和脸型分析,以及根据这些信息从预设库中推荐发型的过程。系统展示了人脸识别技术在实际应用中的价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.摘要

        本文介绍了一个基于人脸识别技术的发型推荐系统的实现与分析。该系统利用Python编程语言和相关库,结合Face++人脸识别API,实现了用户上传照片后的性别识别、脸型分析和发型推荐功能。首先,用户通过Tkinter GUI界面选择上传照片,系统使用PIL库打开并调整图像大小,然后利用Face++ API进行性别和脸型的识别。根据识别结果,系统从预先准备好的发型图片中选取适合的发型进行推荐,并展示给用户选择。通过requests库进行与Face++ API的通信,并利用JSONDecoder解析返回的JSON数据。本文还对使用到的技术和库进行了简要介绍,包括Tkinter、PIL、requests、JSONDecoder等。该发型推荐系统不仅为用户提供了方便快捷的发型选择服务,也展示了人脸识别技术在实际应用中的应用和价值。

 2.发型推荐系统实现过程

        发型推荐系统的实现过程可以分为以下几个主要步骤:
        1.界面设计与图像选择:使用Tkinter库设计用户界面,包括选择文件按钮和展示图片的区域。用户点击选择文件按钮,从本地文件系统中选择一张照片作为输入。
        2.图像处理与上传:使用PIL库打开用户选择的照片,并对其进行必要的调整,如调整大小。将处理后的图像上传至Face++ API进行人脸识别和分析。
        3.人脸识别与脸型分析:使用requests库向Face++ API发送HTTP请求,请求进行人脸检测、性别识别和脸型分析。Face++ API返回识别结果,包括性别和脸型等信息。

def detect_gender(filepath):
    http_url1 = 'https://api-cn.faceplusplus.com/facepp/v3/detect'
    data1 = {'api_key': key, 'api_secret': secret, 'return_attributes': "gender"}
    files1 = {"image_file": open(filepath, "rb")}
    response1 = requests.post(http_url1, data=data1, files=files1)
    req_con1 = response1.content.decode('utf-8')
    req_dict1 = JSONDecoder().decode(req_con1)
    if response1.status_code == requests.codes.ok:
        sex = req_dict1["faces"][0]['attributes']['gender']['value']
        return sex
    else:
        print('faile to detect_gender')
        return None
    # 用户脸型

def detect_face_type(filepath):
    http_url2 = 'https://api-cn.faceplusplus.com/facepp/v1/facialfeatures'
    data2 = {'api_key': key, 'api_secret': secret}
    files2 = {"image_file": open(filepath, "rb")}
    response2 = requests.post(http_url2, data=data2, files=files2)
    req_con2 = response2.content.decode('utf-8')
    req_dict2 = JSONDecoder().decode(req_con2)
    if response2.status_code == requests.codes.ok:
        face_type = req_dict2["result"]["face"]["face_type"]
        return face_type
    else:
        print('faile to detect_face_type')
        return None

        在这段代码中,使用了requests库发送HTTP POST请求至Face++ API的人脸检测和脸型分析接口。请求中包含了用户上传的图像文件以及API密钥等必要参数。Face++ API会对上传的图像进行人脸检测、性别识别和脸型分析,并返回识别结果,其中包括了性别和脸型等信息。最后,根据API返回的结果,提取出性别和脸型等信息并返回给调用者。
        4.发型推荐:根据性别和脸型等识别结果,从预先准备好的发型图片库中选取适合的发型图片。将选取的发型图片展示给用户,供其选择。

def core(sex, face_type):
    number = 25
    global num
    # 针对不同性别和脸型,从预先准备好的发型图片库中选取适合的发型图片,并将其保存到指定目录
    if sex == 'Male' and face_type == 'pointed_face':
        # 从预先准备好的男性瓜子脸发型图片库中选取适合的发型图片并融合
        for i in range(number):
            if os.path.isfile(r"E:\app\picture\Male_pointed_face" + str(i + 1) + ".jpg"):
                exm = r"E:\app\picture\Male_pointed_face" + str(i + 1) + ".jpg"
                result = r"E:\app\picture1\\" + str(i + 1) + ".jpg"
                merge_face(exm, filepath, result, 90)
                num += 1
    elif sex == 'Female' and face_type == 'pointed_face':
        # 从预先准备好的女性瓜子脸发型图片库中选取适合的发型图片并融合
        for i in range(number):
            if os.path.isfile(r"E:\app\picture\Female_pointed_face" + str(i + 1) + ".jpg"):
                exm = r"E:\app\picture\Female_pointed_face" + str(i + 1) + ".jpg"
                result = r"E:\app\picture1\\" + str(i + 1) + ".jpg"
                merge_face(exm, filepath, result, 90)
                num += 1
    # 根据其他性别和脸型的情况,类似地从不同的发型图片库中选取适合的发型图片并融合
    # ...

def merge_face(image_url_1, image_url_2, image_url, number):
    # 调用人脸融合的函数,将选取的发型图片与用户上传的图像进行融合
    # ...

def show(sex, face_type):
    # 根据性别和脸型等识别结果,展示选取的发型图片给用户供其选择
    # ...

def main():
    # 根据用户上传的图像,获取性别和脸型等识别结果
    sex = detect_gender(filepath)
    face_type = detect_face_type(filepath)
    
    # 根据性别和脸型等识别结果,从预先准备好的发型图片库中选取适合的发型图片
    core(sex, face_type)
    
    # 展示选取的发型图片给用户供其选择
    if num > 0:
        show(sex, face_type)
    else:
        print("No suitable hairstyles found.")

        在这段代码中,根据性别和脸型等识别结果,从预先准备好的发型图片库中选取适合的发型图片,并将其与用户上传的图像进行融合。最后,将融合后的发型图片展示给用户供其选择。
        5.结果展示与保存:将最终选定的发型图片展示给用户,包括可能的发型名称和推荐理由等信息。将生成的发型图片保存到本地文件系统,方便用户后续参考或分享。

3.发型推荐系统实现展示

打开选择的照片:

 进行人脸检测、性别识别和脸型分析:

根据性别和脸型等识别结果,从预先准备好的发型图片库中选取适合的发型图片:

 

 4. 总结

        本文介绍了一个发型推荐系统的实现过程,主要涉及了人脸识别、性别识别、脸型分析以及发型推荐等技术。首先,通过调用Face++ API进行人脸检测、性别识别和脸型分析,获取用户的性别和脸型等信息。然后,根据用户的性别和脸型等识别结果,从预先准备好的发型图片库中选取适合的发型图片,并展示给用户进行选择。整体而言,该发型推荐系统通过结合人脸识别和发型推荐技术,为用户提供了便捷、个性化的发型选择服务。但是仍旧存在不足,下一步工作:
        1.简化函数和模块:可以将一些功能相近的代码块封装成函数,提高代码的可读性和可维护性。
        2.优化用户体验:在展示发型推荐时,可以添加一些按钮或者滑动条,让用户可以方便地浏览和选择发型图片。
        3.界面美化:可以使用更加美观的界面风格,添加一些图标和背景图片,提升用户体验。
代码结构优化:将全局变量和函数封装成类,更好地组织代码结构,方便维护和拓展。
        4.另外,考虑到Face++ API的调用次数限制,可以在开发过程中注意优化算法,减少对API的调用次数,提高系统的性能和稳定性。

        上述代码运行环境为基于python3.7.0配置:setuptools==53.0.0 Cython==0.29.34 pprint==0.1 requests==2.18.4 selenium==3.141.0 future==0.17.1 Pillow==8.4.0;

        代码下载链接:

      https://download.csdn.net/download/weixin_40651515/89133489

欣颐免费时尚发廊美发厅全站程序V2.0,所有功能完全免费开放,图片上传、视频播放、资料搜集、图文编辑、价格公告等功能,提升您发廊形象,让更多的人知道您的发廊! 欢迎洽谈网站建设业务,另外购买欣颐软件我们将赠送包括域名、空间在内的全套网站,所有网站设置我们来调整,有您的支持,我们会做的更好! 后台目录:admin 管理员用户名和密码:admin 1.带视频播放功能,可点播各种视频,如发型设计,潮流发型,美发大赛等(需要在程序里添加设置)。 2.网站参数全部后台设置:包括公司名称、网站名称、公司网址、网站LOGO、数据库、地址、邮编、电话、传真、邮箱、咨询QQ、留言设置、安全设置、首页公告和版权信息。 3.管理功能齐全:包括资讯管理、信息管理、发型管理、留言管理、上传文件管理。 4.文章资讯,产品展示均可以添加2级分类。 5.附带留言版功能。后台查看修改用户的留言,可回复留言。 6.数据库管理:包括数据库备份路径都可以自由设置。 7.为保证安全,请在使用前更改数据库名,然后在conn.asp和adminconn.asp里作相应更改。 不是我们的客户暂不提供技术支持,自行使用者请保留我们网页上的网址链接。 演示地址:http://xinyi-cn.cn/fl/ 电话:13026834699 QQ:34653930(加好友请说明来意,以免误拒)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习设计与实现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值