国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

100行Python代碼實現人體膚色檢測

開發 后端
本文中的人體膚色檢測功能采用 OpenCV 庫實現。OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。

概述

本文中的人體膚色檢測功能采用 OpenCV 庫實現。OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS操作系統上. 它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。

本文主要使用了OpenCV的圖像色域轉換, 顏色通道分割, 高斯濾波, OSTU自動閾值等功能.

參考資料

OpenCV探索之路:皮膚檢測技術

學習OpenCV—膚色檢測

準備工作

安裝 Python-OpenCV 庫 

  1. pip install opencv-python -i https://mirrors.ustc.edu.cn/pypi/web/simple 

利用 -i 為pip指令鏡像源, 這里使用電子科技大學的源, 速度比官方源更快.

安裝 Numpy 科學計算庫 

  1. pip install numpy -i https://mirrors.ustc.edu.cn/pypi/web/simple 

圖像的基本操作 

  1. import numpy as np  
  2. import cv2  
  3. imname =  "6358772.jpg"  
  4. # 讀入圖像  
  5. '''  
  6. 使用函數 cv2.imread() 讀入圖像。這幅圖像應該在此程序的工作路徑,或者給函數提供完整路徑.  
  7. 警告:就算圖像的路徑是錯的,OpenCV 也不會提醒你的,但是當你使用命令print(img)時得到的結果是None。  
  8. '''  
  9. img = cv2.imread(imname, cv2.IMREAD_COLOR)  
  10. '''  
  11. imread函數的第一個參數是要打開的圖像的名稱(帶路徑)  
  12. 第二個參數是告訴函數應該如何讀取這幅圖片. 其中  
  13.     cv2.IMREAD_COLOR 表示讀入一副彩色圖像, alpha 通道被忽略, 默認值  
  14.     cv2.IMREAD_ANYCOLOR 表示讀入一副彩色圖像  
  15.     cv2.IMREAD_GRAYSCALE 表示讀入一副灰度圖像  
  16.     cv2.IMREAD_UNCHANGED 表示讀入一幅圖像,并且包括圖像的 alpha 通道  
  17. '''  
  18. # 顯示圖像  
  19. '''  
  20. 使用函數 cv2.imshow() 顯示圖像。窗口會自動調整為圖像大小。第一個參數是窗口的名字,  
  21. 其次才是我們的圖像。你可以創建多個窗口,只要你喜歡,但是必須給他們不同的名字.  
  22. '''  
  23. cv2.imshow("image", img) # "image" 參數為圖像顯示窗口的標題, img是待顯示的圖像數據  
  24. cv2.waitKey(0) #等待鍵盤輸入,參數表示等待時間,單位毫秒.0表示無限期等待  
  25. cv2.destroyAllWindows() # 銷毀所有cv創建的窗口  
  26. # 也可以銷毀指定窗口:  
  27. #cv2.destroyWindow("image") # 刪除窗口標題為"image"的窗口  
  28. # 保存圖像  
  29. '''  
  30. 使用函數 cv2.imwrite() 來保存一個圖像。首先需要一個文件名,之后才是你要保存的圖像。  
  31. 保存的圖片的格式由后綴名決定.  
  32. '''  
  33. #cv2.imwrite(imname + "01.png", img)   
  34. cv2.imwrite(imname + "01.jpg", img) 

運行截圖

皮膚檢測算法

基于YCrCb顏色空間的Cr分量+Otsu法閾值分割算法

YCrCb 即 YUV ,其中 Y 表示明亮度 Luminance 或 Luma , 也就是灰階值. 而 U 和 V 表示的則是色度 Chrominance 或 Chroma ,作用是描述影像色彩及飽和度, 用于指定像素的顏色. 亮度 是透過RGB輸入信號來建立的, 方法是將RGB信號的特定部分疊加到一起. 色度 則定義了顏色的兩個方面─色調與飽和度,分別用 Cr 和 Cb 來表示. 其中, Cr 反映了RGB輸入信號紅色部分與RGB信號亮度值之間的差異. 而 Cb 反映的是RGB輸入信號藍色部分與RGB信號亮度值之間的差異.

該方法的原理也很簡單:

  •  將RGB圖像轉換到 YCrCb 顏色空間,提取 Cr 分量圖像
  •  對 Cr 分量進行高斯濾波
  •  對Cr做自二值化閾值分割處理 OSTU 法

關于高斯濾波

使用低通濾波器可以達到圖像模糊的目的。這對與去除噪音很有幫助。其實就是去除圖像中的高頻成分(比如:噪音,邊界)。所以邊界也會被模糊一點。(當然,也有一些模糊技術不會模糊掉邊界)。OpenCV 提供了四種模糊技術。高斯濾波就是其中一種。實現的函數是 cv2.GaussianBlur()。我們需要指定高斯濾波器的寬和高(必須是奇數)。以及高斯函數沿 X,Y 方向的標準差。如果我們只指定了 X 方向的的標準差,Y 方向也會取相同值。如果兩個標準差都是 0,那么函數會根據核函數的大小自己計算。高斯濾波可以有效的從圖像中去除高斯噪音。如果你愿意的話,你也可以使用函數 cv2.getGaussianKernel() 自己構建一個高斯濾波器。 

  1. # 膚色檢測之一: YCrCb之Cr分量 + OTSU二值化  
  2. img = cv2.imread(imname, cv2.IMREAD_COLOR)  
  3. ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) # 把圖像轉換到YUV色域  
  4. (y, cr, cb) = cv2.split(ycrcb) # 圖像分割, 分別獲取y, cr, br通道圖像  
  5. # 高斯濾波, cr 是待濾波的源圖像數據, (5,5)是值窗口大小, 0 是指根據窗口大小來計算高斯函數標準差  
  6. cr1 = cv2.GaussianBlur(cr, (5, 5), 0) # 對cr通道分量進行高斯濾波  
  7. # 根據OTSU算法求圖像閾值, 對圖像進行二值化  
  8. _, skin1 = cv2.threshold(cr1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)   
  9. cv2.imshow("image CR", cr1)  
  10. cv2.imshow("Skin Cr+OSTU", skin1 ) 

檢測效果

基于YCrCb顏色空間Cr, Cb范圍篩選法

這個方法跟法一其實大同小異,只是顏色空間不同而已。據資料顯示,正常黃種人的Cr分量大約在140至175之間,Cb分量大約在100至120之間。大家可以根據自己項目需求放大或縮小這兩個分量的范圍,會有不同的效果。 

  1. # 膚色檢測之二: YCrCb中 140<=Cr<=175 100<=Cb<=120  
  2. img = cv2.imread(imname, cv2.IMREAD_COLOR) 
  3. ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb) # 把圖像轉換到YUV色域  
  4. (y, cr, cb) = cv2.split(ycrcb) # 圖像分割, 分別獲取y, cr, br通道分量圖像  
  5. skin2 = np.zeros(cr.shape, dtype=np.uint8) # 根據源圖像的大小創建一個全0的矩陣,用于保存圖像數據  
  6. (x, y) = cr.shape # 獲取源圖像數據的長和寬  
  7. # 遍歷圖像, 判斷Cr和Br通道的數值, 如果在指定范圍中, 則置把新圖像的點設為255,否則設為0  
  8. for i in  range(0, x):   
  9. for j in  range(0, y):  
  10. if (cr[i][j] >  140) and (cr[i][j] <  175) and (cb[i][j] >  100) and (cb[i][j] <  120):  
  11.             skin2[i][j] =  255  
  12. else:  
  13.             skin2[i][j] =  0  
  14. cv2.imshow(imname, img)  
  15. cv2.imshow(imname +  " Skin2 Cr+Cb", skin2) 

檢測效果

基于HSV顏色空間H,S,V范圍篩選法

這個方法跟上一方法類似,只是顏色空間不同而已。據資料顯示,正常黃種人的H分量大約在7至20之間,S分量大約在28至256之間,V分量大約在50至256之間。大家可以根據自己項目需求放大或縮小這兩個分量的范圍,會有不同的效果。 

  1. # 膚色檢測之三: HSV中 7<H<20 28<S<256 50<V<256  
  2. img = cv2.imread(imname, cv2.IMREAD_COLOR)   
  3. hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # 把圖像轉換到HSV色域  
  4. (_h, _s, _v) = cv2.split(hsv) # 圖像分割, 分別獲取h, s, v 通道分量圖像  
  5. skin3 = np.zeros(_h.shape, dtype=np.uint8)  # 根據源圖像的大小創建一個全0的矩陣,用于保存圖像數據  
  6. (x, y) = _h.shape # 獲取源圖像數據的長和寬  
  7. # 遍歷圖像, 判斷HSV通道的數值, 如果在指定范圍中, 則置把新圖像的點設為255,否則設為0  
  8. for i in  range(0, x):  
  9. for j in  range(0, y):  
  10. if (_h[i][j] >  7) and (_h[i][j] <  20) and (_s[i][j] >  28) and (_s[i][j] <  255) and (_v[i][j] >  50) and (_v[i][j] <  255):  
  11.             skin3[i][j] =  255  
  12. else:  
  13.             skin3[i][j] =  0  
  14. cv2.imshow(imname, img)  
  15. cv2.imshow(imname +  " Skin3 HSV", skin3) 

檢測效果

三種檢測算法效果對比

項目內文件截圖

Python人體膚色檢測 

 

責任編輯:龐桂玉 來源: 戀習Python
相關推薦

2018-01-23 09:17:22

Python人臉識別

2013-04-24 10:23:02

Android基于膚色Android開發

2021-12-16 06:21:16

React組件前端

2023-05-04 07:34:37

Rust代碼CPU

2023-11-27 07:10:06

日志中間件

2020-04-10 12:25:28

Python爬蟲代碼

2015-02-09 10:43:00

JavaScript

2018-01-10 22:19:44

2019-05-05 09:46:01

Python代碼神經網絡

2025-05-22 07:40:32

2022-03-26 22:28:06

加密通信Python

2022-04-09 09:11:33

Python

2017-02-08 14:16:17

C代碼終端

2020-08-19 10:30:25

代碼Python多線程

2020-03-26 12:38:15

代碼節點數據

2020-02-28 15:33:12

代碼人工智能檢測

2021-08-08 08:08:20

木馬無文件Cobalt Stri

2022-03-14 09:57:30

Python代碼

2023-02-26 13:23:05

檢測骨骼點chatgpt

2014-01-09 09:42:56

Python語言檢測器
點贊
收藏

51CTO技術棧公眾號

黑人巨大精品| 日韩在线三区| 91视频在线观看免费| 在线毛片网站| 国产精品海角社区在线观看| 久久精品人人做人人综合| 精品国产第一福利网站| 日韩影视精品| 精品视频全国免费看| 欧美gay男男猛男无套| 国产igao激情在线入口| 欧美激情xxxx性bbbb| 97se狠狠狠综合亚洲狠狠| av在线日韩| 日韩一区二区高清视频| 亚洲色图激情小说| 国产一区二区三区免费在线观看 | 亚洲国产精品人人做人人爽| 台湾亚洲精品一区二区tv| 狠狠躁狠狠躁视频专区| 色综合久久天天综线观看| 久久久久久久国产精品影院| 欧美国产亚洲精品| 中文字幕国内自拍| 欧美亚洲在线播放| 亚洲综合男人的天堂| 国产一区二区三区91| x88av蜜桃臀一区二区| 91系列在线播放| 欧美三级资源在线| 老司机精品久久| xxxx另类黑人| 免费超爽大片黄| 欧美老肥婆性猛交视频| 亚洲欧洲日本在线| 欧美限制电影| 国产h在线观看| 欧美日韩在线精品| 亚洲男人天堂视频| 久久香蕉国产线看观看99| av日韩精品| bdsm精品捆绑chinese| 国产91精品入口17c| 欧美一级视频精品观看| 美女精品一区二区| 久久av影院| av三级影院| 51国偷自产一区二区三区| 欧美日韩欧美一区二区| 久久aⅴ国产欧美74aaa| 亚洲一区av| 成人c视频免费高清在线观看| 国产精品日韩一区二区| 日韩经典中文字幕| 国产女同互慰高潮91漫画| 四虎成人av| 影音先锋男人资源在线| 你懂的av在线| 国产精品美乳一区二区免费| 欧美精品在线观看一区二区| 国产高清不卡一区| 九九免费精品视频在线观看| 91高清在线| 日韩精品一区二区免费| 奇米影视亚洲狠狠色| 欧美色综合网站| 成人免费视频国产在线观看| 激情综合网站| 在线观看av免费| 一区二区三区 日韩| 国产精品日本一区二区 | 国产ts一区二区| 欧美日韩一区二区三区在线 | 成人动漫一区二区在线| 中国av一区| v片在线观看| 精品久久久久久无码国产| 亚洲a级在线观看| 亚洲成人激情在线| 亚洲视频免费看| 亚洲日本久久| 欧美视频三区| 色网站在线看| 老头吃奶性行交视频| 国产精品香蕉视屏| 久久韩国免费视频| 欧美性一级生活| 91蜜桃免费观看视频| 国产精品porn| 粉嫩av国产一区二区三区| 激情小说 在线视频| 大陆极品少妇内射aaaaa| 91欧美精品午夜性色福利在线 | 久久精品导航| 91精品啪在线观看国产爱臀| 三级外国片在线观看视频| 欧美xxxxx在线视频| 国产日韩久久| 欧美国产第一页| 日韩久久精品一区| 亚洲欧洲一区二区在线播放| 日韩不卡手机在线v区| 麻豆成人入口| 正在播放日韩精品| 先锋av资源在线| 亚洲精品一二三四五区| 亚洲色图自拍| 91青草视频久久| 欧美乱妇高清无乱码| 精品区一区二区| 午夜av区久久| 久久亚洲一级片| 日韩在线a电影| 亚洲女同一区| 日韩高清影视在线观看| 自拍偷自拍亚洲精品被多人伦好爽| 理论视频在线| av黄色免费| 亚洲不卡中文字幕无码| 欧美日韩国产精品一卡| 91精品久久久久久久久久久| 欧美激情国产精品| 亚洲精品资源在线| 日韩亚洲欧美综合| 色综合久久久久综合| 国产精品久久久久久久久免费桃花| 国产自产v一区二区三区c| 亚洲人www| 亚洲色图网站| 久久91麻豆精品一区| 欧美日韩国产一区二区在线观看| 日韩激情电影| 99福利在线| 一本一道波多野毛片中文在线 | 欧产日产国产精品视频| 日韩毛片久久久| 水中色av综合| 色老板亚洲精品一区| 久久久久狠狠高潮亚洲精品| 影音先锋欧美在线| 久久精彩视频| http;//www.99re视频| 国产精品人人做人人爽| 69久久夜色精品国产69乱青草| 久久夜色撩人精品| 日韩在线中文视频| 国产午夜精品视频免费不卡69堂| 精品伦理精品一区| 日韩欧美一区二区三区在线| 欧美日韩极品在线观看一区| 色哟哟一区二区| 黑人巨大精品欧美一区二区一视频| 亚洲精品成人少妇| 亚洲蜜桃精久久久久久久| 亚洲色图另类专区| 亚洲精品中文在线| 亚洲欧洲成人精品av97| 国产精品三级av| 国产精品无码永久免费888| 国产欧美日韩精品a在线观看| 91亚洲男人天堂| 91美女在线视频| 国产清纯在线一区二区www| 久久久久久9999| 91麻豆国产精品久久| 99免费精品在线观看| 99这里只有久久精品视频| 不卡av电影在线播放| 久久美女高清视频| 91视频免费观看| 国产日产精品一区| 中国色在线观看另类| 成人欧美一区二区三区| 日韩欧美国产二区| 超碰aⅴ人人做人人爽欧美| 国产精品视频二区三区| 日本在线视频1区| 尤物视频免费在线观看| 佐山爱痴汉视频一区二区三区 | 女性女同性aⅴ免费观女性恋| 成年人三级视频| 一二三在线视频| 日本欧美黄色片| 蜜臀av免费观看| 中文字幕97| 免费福利在线视频| 欧美一级二级三级区| 黄色影院在线看| 成人精品电影在线| 国产aa精品| 欧美激情在线免费| 爽成人777777婷婷| 国产精品亚洲综合久久| 国产资源精品在线观看| 久久网这里都是精品| 一区二区国产视频| 欧美日韩在线电影| 亚洲免费av片| 欧美国产日韩一区二区| 国产欧美一区二区三区久久 |