设为首页 - 加入收藏 宝鸡站长网 (http://www.0917zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2018 2019 诈骗
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

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

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

拍个自拍,让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?=?0):?
  45. ????????????????????????if?Cr?>?135?and?Cr??85?and?Cb??80:?
  46. ?????????????????????????#?print?'Skin?detected!'?

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

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

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

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章