偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

7行Python的人臉識(shí)別

開(kāi)發(fā) 開(kāi)發(fā)工具
AI涉及的領(lǐng)域眾多,圖像識(shí)別中的人臉識(shí)別是其中一個(gè)有趣的分支。百度的BFR,F(xiàn)ace++的開(kāi)放平臺(tái),漢王,訊飛等等都提供了人臉識(shí)別的API,對(duì)于老碼農(nóng)而言,自己寫(xiě)一小段代碼,來(lái)看看一張圖片中有幾個(gè)人,沒(méi)有高大上,只是覺(jué)得好玩,而且只需要7行代碼。

[[185860]]

隨著去年alphago 的震撼表現(xiàn),AI 再次成為科技公司的寵兒。AI涉及的領(lǐng)域眾多,圖像識(shí)別中的人臉識(shí)別是其中一個(gè)有趣的分支。百度的BFR,F(xiàn)ace++的開(kāi)放平臺(tái),漢王,訊飛等等都提供了人臉識(shí)別的API,對(duì)于老碼農(nóng)而言,自己寫(xiě)一小段代碼,來(lái)看看一張圖片中有幾個(gè)人,沒(méi)有高大上,只是覺(jué)得好玩,而且只需要7行代碼。

  1. import cv2  
  2. face_patterns = cv2.CascadeClassifier('/usr/local/opt/opencv3/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml' 
  3. sample_image = cv2.imread('/Users/abel/201612.jpg' 
  4. faces = face_patterns.detectMultiScale(sample_image,scaleFactor=1.1,minNeighbors=5,minSize=(100, 100))  
  5. for (x, y, w, h) in faces: 
  6.     cv2.rectangle(sample_image, (x, y), (x+w, y+h), (0, 255, 0), 2)  
  7. cv2.imwrite('/Users/abel/201612_detected.png', sample_image); 

第1行 引入 OpenCV

開(kāi)源是偉大的,使我們視野更開(kāi)闊,而且不用重復(fù)造輪子。這里沒(méi)有用PIL,再結(jié)合特定算法,而是直接使用了OpenCV(http://opencv.org)。OpenCV是一個(gè)基于BSD許可發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows和Mac OS操作系統(tǒng)上,輕量而且高效,用C/C++編寫(xiě),同時(shí)提供了Python、Ruby、MATLAB等接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。

第2行 加載分類(lèi)器 cv2.CascadeClassifier

CascadeClassifier是Opencv中做人臉檢測(cè)時(shí)候的一個(gè)級(jí)聯(lián)分類(lèi)器,該類(lèi)中封裝的是目標(biāo)檢測(cè)機(jī)制即滑動(dòng)窗口機(jī)制+級(jí)聯(lián)分類(lèi)器的方式。數(shù)據(jù)結(jié)構(gòu)包括Data和FeatureEvaluator兩個(gè)主要部分。Data中存儲(chǔ)的是從訓(xùn)練獲得的xml文件中載入的分類(lèi)器數(shù)據(jù);而FeatureEvaluator中是關(guān)于特征的載入、存儲(chǔ)和計(jì)算。這里采用的訓(xùn)練文件是OpenCV中默認(rèn)提供的haarcascadefrontalfacedefault.xml。至于Haar,LBP的具體原理,可以參考o(jì)pencv的相關(guān)文檔,簡(jiǎn)單地,可以理解為人臉的特征數(shù)據(jù)。

第3行 加載目標(biāo)圖片 imread

人臉識(shí)別系統(tǒng)一般分為:人臉圖像采集、人臉圖像預(yù)處理、人臉圖像特征提取以及匹配與識(shí)別。 簡(jiǎn)化起見(jiàn),之間讀入圖片,這是一張去年中生代北京閉門(mén)會(huì)的集體照。

[[185861]]

第4行 多尺度檢測(cè) detectMultiScale

調(diào)用 CascadeClassifier 中的調(diào)detectMultiScale函數(shù)進(jìn)行多尺度檢測(cè),多尺度檢測(cè)中會(huì)調(diào)用單尺度的方法detectSingleScale。 參數(shù)說(shuō)明:

  • scaleFactor 是 圖像的縮放因子
  • minNeighbors 為每一個(gè)級(jí)聯(lián)矩形應(yīng)該保留的鄰近個(gè)數(shù),可以理解為一個(gè)人周邊有幾個(gè)人臉
  • minSize 是檢測(cè)窗口的大小

這些參數(shù)都是可以針對(duì)圖片進(jìn)行調(diào)整的,處理結(jié)果返回一個(gè)人臉的矩形對(duì)象列表。

第5行 和 第6行 為每個(gè)人臉畫(huà)一個(gè)框

循環(huán)讀取人臉的矩形對(duì)象列表,獲得人臉矩形的坐標(biāo)和寬高, 然后在原圖片中畫(huà)出該矩形框,調(diào)用的是OpenCV的rectangle 方法,其中矩形框的顏色等是可調(diào)整的。

第7行 保存檢測(cè)后的結(jié)果

萬(wàn)事具備了,調(diào)用imwrite,將檢測(cè)后的結(jié)果保存到指定的位置。結(jié)果圖如下:

[[185862]]

神秘感不是這7行代碼,而是OpenCV中的相關(guān)實(shí)現(xiàn),OpenCV的中文網(wǎng)也是一個(gè)學(xué)習(xí)體會(huì)的好場(chǎng)所。

因此,7行代碼只是個(gè)噱頭,真正的核心是OpenCV。然后,安裝OpenCV環(huán)境的時(shí)候就是有一些坑,特別記錄一下。

基于Mac的OpenCV環(huán)境

建議使用Brew 安裝,如果沒(méi)有安裝brew,先執(zhí)行下面命令:

  1. $/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 

然后,指定目標(biāo)倉(cāng)庫(kù) $brew tap homebrew/science

安裝OpenCV3 $brew install opencv3

安裝速度取決于網(wǎng)絡(luò),安裝完畢需要綁定Python開(kāi)發(fā)環(huán)境,有多種土方法:

1)增加環(huán)境變量,將opencv 的site-packages 添加到PYTHONPATH中

2)使用ln 軟連接,將cv2.so 鏈接到python 環(huán)境的 site-packages中

3)直接cp cv2.so 到 python 環(huán)境的 site-packages 目錄下

更簡(jiǎn)單地是執(zhí)行如下命令:

  1. echo /usr/local/opt/opencv3/lib/python2.7/site-packages >> /usr/local/lib/python2.7/site-packages/opencv3.pth  
  2. mkdir -p /Users/hecom/.local/lib/python2.7/site-packages 
  3. echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/hecom/.local/lib/python2.7/site-packages/homebrew.pth 

對(duì)于強(qiáng)迫癥患者

可以全面安裝opencv的各種插件,如QT插件,視頻插件等:

  1. $brew install opencv3 --with-contrib --with-cuda --with-ffmpeg --with-tbb --with-qt5 

可能會(huì)遇到很多坑,如Error: You must ‘brew link texi2html’ before homebrew/science/opencv3 can be installed

當(dāng)你執(zhí)行 $brew link texi2html時(shí)又會(huì)遇錯(cuò):Error: Cowardly refusing to 'sudo brew link' You can use brew with sudo, but only if the brew executable is owned by root. However, this is both not recommended and completely unsupported so do so atyour own risk

說(shuō)明brew 的權(quán)限有問(wèn)題, 需要解決:$sudo chown root:wheel ‘which brew’

在Ubuntu上OpenCV3的源碼安裝

在Ubantu上安裝先要做一下準(zhǔn)備活動(dòng)

  1. $ aptitude -f install 
  2. $ sudo apt-get update 

然后安裝編譯環(huán)境: $sudo apt-get install build-essential

安裝依賴(lài)庫(kù)$sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev還要安裝python 依賴(lài)及其它依賴(lài)庫(kù)$sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

獲得opencv源代碼git clone https://github.com/Itseez/opencv.git

終于可以編譯安裝了:

  1. $cd opencv  
  2. $cmake -D CMAKE_INSTALL_PREFIX=/home/opencv/build -D CMAKE_BUILD_TYPE=RELEASE .. 

最后,安裝python-opencv:

  1. $sudo apt-get install python-opencv 

OpenCV的Python環(huán)境簡(jiǎn)單驗(yàn)證

一行代碼驗(yàn)證OpenCV的Python環(huán)境是否成功:

  1. $python -c "import cv2; print dir(cv2)" 

如果輸出了很多cv2 的屬性和函數(shù)名的字典,就表示成功;否則的話(huà),還需要繼續(xù)填坑。

【本文來(lái)自51CTO專(zhuān)欄作者“老曹”的原創(chuàng)文章,作者微信公眾號(hào):喔家ArchiSelf,id:wrieless-com】

戳這里,看該作者更多好文

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專(zhuān)欄
相關(guān)推薦

2017-07-24 15:06:02

代碼人臉識(shí)別實(shí)踐

2024-06-12 12:57:12

2024-11-01 07:00:00

人臉識(shí)別Python機(jī)器學(xué)習(xí)

2017-10-17 13:30:32

Python人臉識(shí)別

2024-09-30 06:04:02

人臉識(shí)別Python機(jī)器學(xué)習(xí)

2018-05-11 14:10:17

Python人臉識(shí)別

2020-12-23 08:29:08

人臉識(shí)別AI人工智能

2013-05-28 11:08:51

人臉識(shí)別html5

2019-11-25 13:44:02

人臉識(shí)別AI人工智能

2020-08-19 09:25:32

Python人臉識(shí)別人工智能

2021-09-07 09:01:07

人臉識(shí)別人工智能數(shù)據(jù)

2021-08-13 10:01:19

人臉識(shí)別人工智能數(shù)據(jù)

2021-03-16 14:57:41

人臉識(shí)別安全隱私

2019-09-12 19:00:06

人臉識(shí)別AI人工智能

2015-02-10 10:08:59

JavaScript

2021-05-10 11:08:00

人工智能人臉識(shí)別

2021-01-29 23:14:31

人臉識(shí)別軟件工具

2017-09-19 11:33:00

智能手機(jī) 人臉識(shí)別

2021-03-09 09:20:09

人臉識(shí)別人工智能智能手機(jī)

2021-11-03 13:32:28

MetaFacebook人臉識(shí)別
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)