颜值评分不知道大家有没有玩过,今天我们就来自己写一个玩玩。

环境搭建

所需工具

**Python版本:**3.5.4(64bit)

相关模块:

opencv_python模块、sklearn模块、numpy模块、dlib模块以及一些Python自带的模块。

实现思路

(1)模型训练

(2)提取人脸关键点

(3)特征生成

(4)颜值预测

使用方式

有特殊疾病者请慎重尝试预测自己的颜值,本人不对颜值预测的结果和带来的所有负面影响负责!!!(总之你肯定比肖战帅!!)

言归正传。

环境搭建完成后,解压相关文件中的Face_Value.rar文件,cmd窗口切换到解压后的*.py文件所在目录。

例如:

打开test_img文件夹,将需要预测颜值的照片放入并重命名为test.jpg。

例如:

最后依次运行:

# 人脸关键点提取脚本
import cv2
import dlib
import numpy# 模型路径
PREDICTOR_PATH = './model/shape_predictor_68_face_landmarks.dat'
# 使用dlib自带的frontal_face_detector作为人脸提取器
detector = dlib.get_frontal_face_detector()
# 使用官方提供的模型构建特征提取器
predictor = dlib.shape_predictor(PREDICTOR_PATH)
face_img = cv2.imread("test_img/test.jpg")
# 使用detector进行人脸检测,rects为返回的结果
rects = detector(face_img, 1)
# 如果检测到人脸
if len(rects) >= 1:print("{} faces detected".format(len(rects)))
else:print('No faces detected')exit()
with open('./results/landmarks.txt', 'w') as f:f.truncate()for faces in range(len(rects)):# 使用predictor进行人脸关键点识别landmarks = numpy.matrix([[p.x, p.y] for p in predictor(face_img, rects[faces]).parts()])face_img = face_img.copy()# 使用enumerate函数遍历序列中的元素以及它们的下标for idx, point in enumerate(landmarks):pos = (point[0, 0], point[0, 1])f.write(str(point[0, 0]))f.write(',')f.write(str(point[0, 1]))f.write(',')f.write('\n')f.close()
# 成功后提示
print('Get landmarks successfully')
# 颜值预测脚本
from sklearn.externals import joblib
import numpy as np
from sklearn import decompositionpre_model = joblib.load('./model/face_rating.pkl')
features = np.loadtxt('./data/features_ALL.txt', delimiter=',')
my_features = np.loadtxt('./results/my_features.txt', delimiter=',')
pca = decomposition.PCA(n_components=20)
pca.fit(features)
predictions = []
if len(my_features.shape) > 1:for i in range(len(my_features)):feature = my_features[i, :]feature_transfer = pca.transform(feature.reshape(1, -1))predictions.append(pre_model.predict(feature_transfer))print('照片中的人颜值得分依次为(满分为5分):')k = 1for pre in predictions:print('第%d个人:' % k, end='')print(str(pre)+'分')k += 1
else:feature = my_featuresfeature_transfer = pca.transform(feature.reshape(1, -1))predictions.append(pre_model.predict(feature_transfer))print('照片中的人颜值得分为(满分为5分):')k = 1for pre in predictions:print(str(pre)+'分')k += 1

【Python有个圈】

你是Python小白吗?是的话就进我的学习圈吧

进圈福利:
1.五分钟看漫画学Python
2.简明Python教程
3.一直在收藏但从来没看过的225G视频资料
4.Python项目实战案例
5.专业技术老师解答辅导

肖战真的没我帅!我自己写的Python颜值检测说的!相关推荐

  1. 如何把python文件发给别人没_如何把自己写的python程序给别人用

    这里讲的给别人用,不是指将你的代码开源,也不是指给另一个程序员用..... 前段时间写了个程序,输入URP学生系统的账号和密码,输出课表.绩点之类的信息,想给同学用,但是总不能叫别人也去装python ...

  2. do{} while(0) 只执行一次无意义?你可能真的没理解

    在嵌入式开发中,宏定义非常强大也非常便捷,如果正确使用可以让你的工作事半功倍.然而,在很多的C程序中,你可能会看到不是那么直接的比较特殊一点的宏定义,比如do{}while(0). do{condit ...

  3. 被信任的感觉,我是真的没想到。。

    是这样的,昨天发布了技术人的五层楼这篇文章之后,目前是半价也就是五折.光昨晚一会会续费的高达 40 多位,同时又有了新入坑的球友.我都不知道说啥了,今年白天续费了高达二十多位球友.总之,说实话,我是真 ...

  4. 人生本来就是一场赌博,中年危机的程序员就真的没机会了吗?

    打开了csdn,这个曾经程序员的聚集地(现在倒是有些没落的趋势)随手又打开了一直比较关注的一个板块:程序人生,刚就业的.新入行的,职业发展迷茫的.感叹生活的等不一而足,总体是关于人心智方面的讨论最多. ...

  5. (戒急用忍)本来是要展望2019的,没想到重点不由自主的写成了回顾前几年的事情了

    此篇文章,是接我上一篇文章来写的,这是我上一篇文章 本来是要展望2019的,没想到重点不由自主的写成了回顾前几年的事情了,这一两年特别喜欢怀旧,可能年纪大了吧,脑子里老是浮现小时候的事情,最近又想起了 ...

  6. win10麦克风说话没声音_电脑录屏,真的没那么麻烦

    剪辑视频没有高清素材,视频下载受限, 大部分录屏软件难用还要收费 其实电脑录屏没那么麻烦, 补充更新: 今天意外地发现了一款非常不错的电脑录屏软件,整个软件体积小巧.操作简单,最为难得的是,录制的视频 ...

  7. 我真的没读野鸡大学!是他们不好好起名字!

    我真的没读野鸡大学!是他们不好好起名字! 新航道在线2017-03-09 16:24:10野鸡大学 大学阅读(13861)评论(10) 声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅 ...

  8. 中国学历真相:非985、211真的没前途了吗?

    本文转载自 后浪研究所,作者 张歌.方婷 俗话说,万物皆有鄙视链,然而在学历竞争层面,这条"隐形的鄙视链"似乎越来越像是舆论场上的主旋律. 海归看不起国内大学,211看不起二本三本 ...

  9. 监控摄像头个人购买零门槛真的没问题吗?

    有人说,当今是个注重隐私的时代,也是最没有隐私的时代.无论在大街上,还是小区里,各式各样的摄像头总是出现在我们身边,就连进了卫生间,也不得不提防,说不定在某个隐秘的地方,一双"小眼睛&quo ...

最新文章

  1. 计算机操作系统第四版习题答案 第一章简答题
  2. 量子计算赛道上的巨头拉锯战
  3. node JS獲取GPS_Node.js 14 正式发布:V8 引擎升级,新增异步本地存储 API
  4. 查看ie保存的表单_无代码搭建系统(一)——流程表单搭建
  5. 传百度最高决策层Estaff成员王路将离职,官方暂未回应...
  6. 服务器执行sh文件或目录,将window的shell脚本通过ftp传输到Linux服务器后, shell脚本中执行时提示“没有那个文件或目录”的解决办法...
  7. java 文件 填空题_Java作业之填空题.doc
  8. 电脑内录录音软件,可选择录音来源
  9. [乐意黎]某音上超酷炫的 Word Clock 文字云时钟屏保配置
  10. 【FinE】EMD/EEMD方法及金融数据分解
  11. 【5G】5GC网元服务及对应消息
  12. gmail注册方法_“ Gmail脱机”应用正在关闭,这是使用的替代方法
  13. 多线程任务超时的处理机制
  14. oracle 11g duplicate database基于备份复制数据库(五)
  15. 快2023年了,一个初级前端开发要达到什么水平?
  16. win10电脑如何远程连接云服务器?
  17. 数据分析---arXiv论文数据统计
  18. 【北邮国院大三上】电子商务法(e-commerce law)知识点整理——Banking Lawe-Payment
  19. bzoj3786 星际探索 splay dfs序
  20. could not locate named parameter [***]; nested exception is org.hibernate.QueryParameterException: c

热门文章

  1. Appium: Could not proxy command to the remote server. Original error: socket hang up
  2. 关于根轨迹对于控制系统的一点理解
  3. iOS开发之第三方分享QQ分享,史上最新最全第三方分享QQ方式实现
  4. linux静默安装oracle11g数据库教程
  5. 【Unity】创建一个自己的可交互AR安卓程序
  6. Visual Studio 2017正式版各版本比较:企业版最强大
  7. 面向对象的三大基本特性,五大基本原则。
  8. 树莓派学习(三)基于OpenCv的人脸识别
  9. 查看网络通不通的几种方法
  10. Python 切片