加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

拍个自拍,让Python告诉你,军训过后你黑了几度?

发布时间:2019-09-25 09:31:27 所属栏目:优化 来源:文摘菌
导读:大数据文摘出品 作者:曹培信、宁静 一年一度的大学开学季,一年一度的军训季。 在六月中旬高考结束之后,万千学子迎来了他们人生中最长也是最无忧无虑的假期,到了八月底九月初,他们将踏上人生的一段重要旅程大学。 然而等待他们的第一课,便是军训。 每
副标题[/!--empirenews.page--]

拍个自拍,让Python告诉你,军训过后你黑了几度?

大数据文摘出品

作者:曹培信、宁静

一年一度的大学开学季,一年一度的军训季。

在六月中旬高考结束之后,万千学子迎来了他们人生中最长也是最无忧无虑的假期,到了八月底九月初,他们将踏上人生的一段重要旅程——大学。

然而等待他们的第一课,便是军训。

每所高校对军训的要求不同,从时间来看,短的只有5天,长的多达一个月,根据网上一份军训时间排行榜,比如清华大学,以34天稳居第二。(警校排第一也是无可厚非了,不过吉林的院校确实热衷军训,前十中两所吉林的院校上榜)

拍个自拍,让Python告诉你,军训过后你黑了几度?

除了一些开始又晚、时间又长的院校(比如重庆大学),大部分院校的军训应该已经结束了,然而经历了军姿、齐步、正步、阅兵甚至拉练的“摧残”后,军训岁月在身上留下的最深的痕迹便是——晒!黑!了!

拍个自拍,让Python告诉你,军训过后你黑了几度?

图片来自网络

军训前和军训后,就是“白古”和“黑古”的差别啊!想知道自己军训后究竟晒黑了多少么?下面文摘菌就带你用Python看看,自己究竟军训后黑了几个度。

基于RGB和YCbCr颜色空间的混合肤色检测

想知道自己的皮肤颜色,首先要将皮肤检测出来。

肤色检测有很多方法,比如:

  • 基于RGB的颜色空间模型;
  • 基于椭圆皮肤模型的皮肤检测;
  • YCrCb颜色空间Cr分量+Otsu法阈值分割;
  • 基于YCrCb颜色空间Cr,Cb范围筛选法;
  • HSV颜色空间H范围筛选法;
  • opencv自带肤色检测类AdaptiveSkinDetector;

相关链接:https://blog.csdn.net/qq_22527639/article/details/81501565

2004年,Georgy Kukharev和Adam Nowosielski为了提高模型的稳定性,将多个颜色空间结合,提出RGB颜色空间和YCbCr颜色空间的混合肤色检测器。像素值满足如下条件:

拍个自拍,让Python告诉你,军训过后你黑了几度?

实现的代码也很简单,首先引入必要的包:

  1. import cv2 
  2. import numpy as np 
  3. from matplotlib import pyplot as plt 

然而操纵图像,将RGB颜色空间3通道的值和YCbCr颜色空间3通道的值结合起来,然后根据判别条件进行肤色检测:

  1. def skin_color(imgFile): 
  2.  
  3.  
  4.         # load an original image 
  5.         img = cv2.imread(imgFile) 
  6.  
  7.  
  8.         rows,cols,channels = img.shape 
  9.  
  10.  
  11.         # convert color space from rgb to ycbcr 
  12.         imgYcc = cv2.cvtColor(img, cv2.COLOR_BGR2YCR_CB) 
  13.           
  14.         # convert color space from bgr to rgb                         
  15.         img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) 
  16.           
  17.         # prepare an empty image space 
  18.         imgSkin = np.zeros(img.shape, np.uint8) 
  19.         # copy original image 
  20.         imgimgSkin = img.copy() 
  21.  
  22.  
  23.         s=0 
  24.         sum_R=sum_G=sum_B=0 
  25.         for r in range(rows): 
  26.             for c in range(cols): 
  27.                  
  28.                 # non-skin area if skin equals 0, skin area otherwise         
  29.                 skin = 0 
  30.  
  31.  
  32.                 # get values from rgb color space 
  33.                 R = img.item(r,c,0) 
  34.                 G = img.item(r,c,1) 
  35.                 B = img.item(r,c,2) 
  36.                  
  37.                 # get values from ycbcr color space    
  38.                 Y = imgYcc.item(r,c,0) 
  39.                 Cr = imgYcc.item(r,c,1) 
  40.                 Cb = imgYcc.item(r,c,2)                                                                                                                                         
  41.                 # skin color detection 
  42.                  
  43.                 if R > G and R > B: 
  44.                     if (G >= B and 5 * R - 12 * G + 7 * B >= 0) or (G < B and 5 * R + 7 * G - 12 * B >= 0): 
  45.                         if Cr > 135 and Cr < 180 and Cb > 85 and Cb < 135 and Y > 80: 
  46.                          # print 'Skin detected!' 

参考链接:https://blog.csdn.net/shadow_guo/article/details/43635181

对比色卡,看看你黑了几度

检测出了皮肤的区域,我们就需要将皮肤区域的颜色RGB值计算出来,然后与色卡进行对比。

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读