A:我会嗖嗖嗖过一遍,然后随机挑5张顺眼的。

紫薯:还不如让老板随机选顺眼的。

B:开个小组会,集合大家的意见选5个最漂亮的。

紫薯:你真不在乎老板想看到哪几位美女么?

C:随机选5个身材满足标准、容貌可佳的就可以了。

紫薯:你的决策也很随机哇。

紫薯觉得:我们需要考虑老板最喜欢长成什么样的女生,需要知道来看台的客户对美女的偏好,要知道哪些美女的长相与产品、场景更相配。

所以...最好还是用上图像识别技术,让“万能”的算法帮你搞定,不然搞完这些保证你看到美女就想吐。

为了简单起见,这里只考虑老板喜好这一个因素。因为无论因素多少,我们只需要确定一个标准美女便可。

紫薯的解决方案:

第一步:紫薯:“老板,你觉得哪个明星最漂亮?” 老板:“ 孙俪”。

第二步:小叔花了3秒钟找了张孙俪姐姐的照片

第三步:又花了3秒钟把自己的那套人脸识别、人脸相似度匹配的软件程序打开。(mac pro,)

第四步:跑程序自动匹配从1000张原始图片中抠出人脸结果,花了30分钟,这期间我喝了个茶看看了远处的风景。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
......
modelin/1 (9)(8).jpg
modelin/1 (9)(9).jpg
modelin/1 (9).jpg
modelin/Alyson-Hannigan-5.jpg
modelin/Alyson_Hannigan_200512.jpg
modelin/fangbingbing.jpg
modelin/gaoyuanyuan.jpg
modelin/libingbing.jpg
modelin/linqingxia.jpg
modelin/linzhiling.jpg
modelin/liushishi.jpg
modelin/liuyifei.jpg
modelin/lizhi.jpg
modelin/Miley-Cyrus-Photos.jpg
modelin/Screenshot at Dec 11 22-10-55.png
modelin/shuwei.jpg
modelin/tangwei.jpg
modelin/zhangmanyu.jpg
detect 1015 faces, cost 1777.025725 seconds! /////耗时

下面是给每张图片打分,733张有效人脸,耗时35s:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
......
图片名称:[1 (9)(7)face.jpg], 与目标图片相似度=[74]
图片名称:[1 (9)(8)face.jpg], 与目标图片相似度=[64]
图片名称:[1 (9)(9)face.jpg], 与目标图片相似度=[66]
图片名称:[1 (9)face.jpg], 与目标图片相似度=[54]
图片名称:[Alyson-Hannigan-5face.jpg], 与目标图片相似度=[52]
图片名称:[Alyson_Hannigan_200512face.jpg], 与目标图片相似度=[46]
图片名称:[gaoyuanyuanface.jpg], 与目标图片相似度=[44]
图片名称:[libingbingface.jpg], 与目标图片相似度=[42]
图片名称:[linqingxiaface.jpg], 与目标图片相似度=[58]
图片名称:[linzhilingface.jpg], 与目标图片相似度=[56]
图片名称:[liushishiface.jpg], 与目标图片相似度=[44]
图片名称:[liuyifeiface.jpg], 与目标图片相似度=[44]
图片名称:[lizhiface.jpg], 与目标图片相似度=[54]
图片名称:[Miley-Cyrus-Photosface.jpg], 与目标图片相似度=[44]
图片名称:[Screenshot at Dec 11 22-10-55face.jpg], 与目标图片相似度=[56]
图片名称:[tangweiface.jpg], 与目标图片相似度=[44]
图片名称:[zhangmanyuface.jpg], 与目标图片相似度=[48]
detect 733 faces, cost 35.284538999999995 seconds!//////耗时

前五名的结果出来了

1
2
3
4
5
图片名称: (52)face.jpg , 与目标图片相似度= 94
图片名称: 0 (142)face.jpg , 与目标图片相似度= 94
图片名称: 1 (27)face.jpg , 与目标图片相似度= 94
图片名称: 1 (26)(5)face.jpg , 与目标图片相似度= 92
图片名称: 1 (2)face.jpg , 与目标图片相似度= 92

第五步:又花了3秒钟,5位绝色美女的照片被发到老板面前,而这五位都是老板最喜欢的。

以下进入高能编码区。

介绍下程序实现方法原理:

首先遍历文件夹下所有图片,识别其面部区域,并抠图保存。

主要使用opencv的人脸识别算法,有兴趣的可以了解下haar特征,核心代码如下:

1
2
3
4
5
6
7
8
start = time.clock()
for file in files:
##mac系统,删除SD_Store隐藏文件
    if 'DS_Store' in file:
        continue
    print ('modelin/'+file)
    outFaces('modelin/'+file,file[:-4])
print ("detect %d faces, cost %s seconds!" % (len(files),time.clock()-start))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def detectFaces(image_path):
    img = cv2.imread(image_path)
    face_cascade = cv2.CascadeClassifier("cvdata/haarcascades/haarcascade_frontalface_default.xml")
    if img.ndim == 3:
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    else:
        gray = img 
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(10,10),
                                     flags=cv2.CASCADE_SCALE_IMAGE)
    result = []
    for (x,y,width,height) in faces:
        result.append((x,y,x+width,y+height))
    return result

图像识别最常用的是通过颜色特征判断。图片相似性主要通过比较汉明距离来确定。像手指一样,每张图片也有自己的图像指纹,它是由一组哈希算法运算后得到的二进制结果。所谓汉明距离,便是一组二进制数据变成另一组二进制数据所需步骤。两张相同的图片,汉明距离便是0.

遍历抠出的面部区域文件夹,使用pHash(感知哈希算法)进行图片指纹的对比:

1
2
3
4
5
6
7
for fname in files:
    image2 = Image.open('modelout/'+fname)
    score = classify_DCT(imageStand,image2)
    dicAll[fname] = score
    print ("图片名称:[%s], 与目标图片相似度=[%d]" % (fname,(100-score)))
     
print ("detect %d faces, cost %s seconds!" % (len(files),time.clock()-start))

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def simmilar_people(image1,image2,size=(32,32),part_size=(8,8)):
    assert size[0]==size[1],"size error"
    assert part_size[0]==part_size[1],"part_size error"
    image1 = image1.resize(size).convert('L').filter(ImageFilter.BLUR)
    image1 = ImageOps.equalize(image1)
    matrix = get_matrix(image1)
    DCT_matrix = DCT(matrix)
    List = sub_matrix_to_list(DCT_matrix, part_size)
    middle = get_middle(List)
    code1 = get_code(List, middle)
    image2 = image2.resize(size).convert('L').filter(ImageFilter.BLUR)
    image2 = ImageOps.equalize(image2)
    matrix = get_matrix(image2)
    DCT_matrix = DCT(matrix)
    List = sub_matrix_to_list(DCT_matrix, part_size)
    middle = get_middle(List)
    code2 = get_code(List, middle)
    return comp_code(code1, code2)

小决策,大学问。

此项目代码已经开源。但是千张美女图片因怕涉嫌传播**...,所以不敢乱放。

老板给了你1000张美女model照片,让你选5位出来参加展会,请问你如何选相关推荐

  1. 美图收割机,老司机带你用Python,轻松获取1000张美女图片

    牛老师是一个滴水之恩当涌泉相报的人. 看着群里小伙伴们的无私分享,再看看自己空空如也的文件夹,我羞愧的低下了头 . 为了能回报小伙伴,和广大无私的网友 牛老师毅然决然的做出了这个造福人民的决定 靠着这 ...

  2. 5年5亿美金,一年送出 1000 张训练卡,华为昇腾如何吸引AI开发者?

    2018 年,在第三届 HUAWEI CONNECT(华为全联接大会)上,华为首次公布了 AI 战略与全栈全场景 AI 解决方案,其中包含全球首个覆盖全场景人工智能的华为昇腾(Ascend)系列处理器 ...

  3. python美女源代码_单身程序员,每晚用python抓取百万张美女图片,连女友都不想找了...

    每当夜深人静时,这位长期单身的程序员就会起床开电脑,然后用python抓取百万张美女图片,存进U盘,目的目前还不知道,但技术是万能的,这样一来,可能连找女朋友的钱都省了. 其实,还有更好看的! 而且还 ...

  4. 1000张动漫萌妹子次元系人物素材图,可做壁纸头像

    本次分享壁纸 次元系,1000+张动漫壁纸人物素材!可做壁纸头像 走过路过不要错过,总有一款适合你. 网盘下载地址:https://www.skpan.cn/3cBNHXcNBLf

  5. 有没有什么惊艳的微信头像?Python一键下载1000张!

    bee君一直以来,对选用一个合适的微信头像,感到比较头疼. 今天bee君为大家推荐1000多张,非常惊艳的能用做微信头像的图片,都已按照类别分好类,文末提供下载方法,相信大家一定能从中找到一款自己喜欢 ...

  6. Python一键下载1000张惊艳的微信头像

    一直以来,对选用一个合适的微信头像,感到比较头疼. 今天为大家推荐1000多张,非常惊艳的能用做微信头像的图片,都已按照类别分好类,文末提供下载方法,相信大家一定能从中找到一款自己喜欢的. 1 req ...

  7. Java多线程示例:4个售票员卖1000张火车票

    //售票员 import java.util.Iterator; import java.util.Map;public class TicketSaler implements Runnable { ...

  8. 设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒售出一张票。请模拟并打印出售票过程。

    设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒售出一张票.请模拟并打印出售票过程. public class RunnableImpl implements Runnabl ...

  9. 华为上传图片到计算机,华为神技逆天,秒传1000张手机照片到电脑

    原标题:华为神技逆天,秒传1000张手机照片到电脑 如今,手机和电脑互传照片.文件,大家已经习惯了使用QQ.微信文件发送助手,但几张.几十张照片文章还好说,如果遇上上千照照片以及大容量视频,文件助手的 ...

最新文章

  1. 数据库高性能读写分离集群操作说明
  2. 团队作业9--beta版本测试报告及发布说明
  3. 感知器及其在python中的实现_感知器及其在Python中的实现
  4. python中序列类型和数组之间的区别_「Python」序列构成的数组
  5. kb3042553显示不适用计算机,KB3042553补丁打不上,怎么办?
  6. eclipse各个版本下载
  7. vue添加html开启服务器_vue服务端渲染添加缓存
  8. matlab随机数函数小结
  9. 高速收费站简笔画_桥的简笔画有哪些
  10. 让Excel窗口保持在所有窗口前面
  11. SAP License:FI-现金流量表的几种实现方式
  12. 建筑业房地产管理系统
  13. Docker容器之网络管理、端口映射、容器间的互联、Dockerfile完成镜像封装
  14. 《数据库系统概论》3.3.1模式的定义与删除实操
  15. 7.awd不死马权限维持及变种
  16. Simulink如何添加模块到Library Browser
  17. 什么是间隙锁?怎样避免间隙锁的危害?
  18. 研发项目购置的软件服务器属于无形资产吗,购买云服务器属于无形资产
  19. iOS--React Native密码键盘插件
  20. 怎么把Excel转换成PDF格式?这三种方法轻松完成转换

热门文章

  1. 第三方微信登陆的后台实现
  2. java契约式编程_第三单元总结——JML契约式编程
  3. RK3399驱动开发 | 10 - RK3399以太网gmac调试
  4. Jack Ma:月入一二十亿很难受:)
  5. 如何写出优雅漂亮的c#代码_方法(三)
  6. 正则替换字符串的全角、半角标点符号
  7. ERP出入库进阶操作与子流程--开源软件诞生28
  8. WebSocket区分不同客户端两种方法(HttpSession和@PathParam)
  9. 【华为OD机试模拟题】用 C++ 实现 - 航天器(2023.Q1)
  10. SAP Help PDF index//http://help.sap.com/printdocu/core/Print46c/en/Data/Index_en.htm