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

大数据文摘出品

作者:曹培信、宁静

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

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

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

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

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

图片来自网络

军训前和军训后,就是“白古”和“黑古”的差别啊!想知道自己军训后究竟晒黑了多少么?下面文摘菌就带你用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颜色空间的混合肤色检测器。像素值满足如下条件:

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

 
 
 
 
  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!' 

网页名称:拍个自拍,让Python告诉你,军训过后你黑了几度?
当前网址:http://www.shufengxianlan.com/qtweb/news49/415099.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联