<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預(yù)覽,將在時失效
      人工智能開發(fā)者 正文
      發(fā)私信給三川
      發(fā)送

      6

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      本文作者: 三川 2017-05-26 18:43
      導(dǎo)語:建議先讀一遍本文再跑代碼。

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      雷鋒網(wǎng)按:這是篇是利用 OpenCV 進行人臉識別的技術(shù)講解。閱讀本文之前,這是注意事項:

      • 建議先讀一遍本文再跑代碼——你需要理解這些代碼是干什么的。成功跑一遍不是目的,能夠舉一反三、在新任務(wù)上找出 bug 才是。

      • 請確保用的是 OpenCV v2

      • 你需要一個網(wǎng)絡(luò)攝像頭

      OpenCV

      OpenCV 是最流行的計算機視覺庫,原本用 C 和 C++ 開發(fā),現(xiàn)在也支持 Python。

      它使用機器學(xué)習(xí)算法在圖像中搜索人的面部。對于人臉這么復(fù)雜的東西,并沒有一個簡單的檢測能對是否存在人臉下結(jié)論,而需要成千上萬的特征匹配。算法把人臉識別任務(wù)分解成數(shù)千個小任務(wù),每個都不難處理。這些任務(wù)也被稱為分類器。

      對于類似于人臉的對象,你或許需要不少于 6000 個分類器,每一個都需要成功匹配(當(dāng)然,有容錯率),才能檢測出人臉。但這有一個問題:對于人臉識別,算法從左上角開始計算一個個數(shù)據(jù)塊,不停問“這是張臉嗎”。每個數(shù)據(jù)塊有超過 6000 個檢測,加起來的計算量會達到數(shù)百萬級別,計算機很可能會讓你等得花兒都謝了。

      OpenCV 使用 cascades 來避免這種情況。Cascade 是什么?最佳答案已經(jīng)在字典里了:一條瀑布或者連續(xù)瀑布。

      好比連續(xù)瀑布,OpenCV cascade 把人臉檢測問題分解為好幾步。對于每個數(shù)據(jù)塊,它都進行一個粗略、快速的檢測。若通過,會再進行一個更仔細的檢測,以此不斷類推。該算法有 30 到 50 個這樣的階段,或者說 cascade。只有通過全部階段,算法才會判斷檢測到人臉。這樣做的好處是:大多數(shù)圖形都會在頭幾步就產(chǎn)生否定反饋,算法因而不需要在它上面測試所有 6000 個特征,大大節(jié)省了時間。相對于“正常流程”耗費數(shù)個小時,這可以實時實現(xiàn)人臉檢測。

      實踐中的 Cascade 

      它的理論也許聽起來很復(fù)雜,實際操作起來其實是很簡單的。這些 cascades 只是一系列包含  OpenCV 數(shù)據(jù)的 XML 文件。你用想要的 cascade 初始化代碼,它自會替你做你想要的事。

      由于人臉識別的普遍性,OpenCV 有一系列能檢測各種東西的內(nèi)置 cascade,從眼睛到手到腿都可以檢測。甚至還有針對非人體物體的 cascade。比如說,如果你經(jīng)營一家賣香蕉的水果店,想要監(jiān)測偷香蕉的人,就有一個家伙開發(fā)了一個針對這一場景的算法

      安裝 OpenCV

      首選,你需要找到對應(yīng)你的操作系統(tǒng)的正確設(shè)置文件。

      我發(fā)現(xiàn),安裝 OpenCV 是最難的一個環(huán)節(jié)。如果你遇到奇怪的、無法解釋的錯誤,有可能是庫崩潰了、32 與 64 比特的兼容問題等等。個人經(jīng)驗是,只用 Linux 虛擬機,從頭安裝 OpenCV 最簡單。

      安裝好之后,你可以開啟一個 Python 會話,敲出下面的代碼,來測試它是否能工作:

      $ python

      >>> import cv2

      >>>

      如果沒彈出任何錯誤,你就可以到下個環(huán)節(jié)了。

      理解代碼

      源代碼可在資源庫下載。記得拿好 face_detect.py 文本、abba.png 圖片以及 haarcascade_frontalface_default.xml。下面,我把代碼分解開來。

      # Get user supplied values

      imagePath = sys.argv[1]

      cascPath = sys.argv[2]

       將圖片和 cascade 名字作為命令行參數(shù)傳入。我們會用 Abba 圖片和 OpenCV 提供的默認 cascade 來人臉檢測。

      # Create the haar cascade

      faceCascade = cv2.CascadeClassifier(cascPath)

      現(xiàn)在,我們創(chuàng)建一個 cascade,并用人臉 cascade 初始化。這把人臉 cascade 導(dǎo)入內(nèi)存,所以它隨時可以使用。記住,該 cascade 只是一個包含人臉檢測數(shù)據(jù)的  XML 文件。

      # Read the image

      image = cv2.imread(imagePath)

      gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

      讀取圖片把它轉(zhuǎn)化到灰度格式。

      # Detect faces in the image

      faces = faceCascade.detectMultiScale(    

      gray,    

      scaleFactor=1.1,    

      minNeighbors=5,    

      minSize=(30, 30),   

      flags = cv2.cv.CV_HAAR_SCALE_IMAGE

      )

      該函數(shù)做的就是檢測人臉,是代碼核心部分。所以,我們來過一遍選項。

      DetectMultiScale 函數(shù)是一個檢測物體的通用函數(shù)。我們在人臉 cascade 上調(diào)用它,它檢測的就是人臉。第一個選項是灰度圖片。

      第二個是 scaleFactor。有的人臉離鏡頭近,會比其他人臉更大。ScaleFactor 對此進行補償。

      檢測算法使用移動窗口來檢測物體。在系統(tǒng)宣布檢測到人臉之前,minNeighbors 會對當(dāng)前其周圍有多少物體進行定義。MinSize 給出每個窗口的大小。

      我用的是這些領(lǐng)域的常用值。現(xiàn)實中,你會拿不同的值試驗窗口尺寸、擴展因素等參數(shù),直到找出最比較合適的那一個。

      當(dāng)該函數(shù)認為它找到一張人臉時,會返回一個矩形列表。下一步,我們會進行循環(huán),直到它認為檢測出了什么。

      print "Found {0} faces!".format(len(faces))

      # Draw a rectangle around the faces

      for (x, y, w, h) in faces:

          cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)   

      該函數(shù)返回四個值:矩形的 x 和 y 坐標(biāo),以及它的高和寬。我們用這些值和內(nèi)置的 rectangle() 函數(shù),畫出矩陣。

      cv2.imshow("Faces found" ,image)

      cv2.waitKey(0)

      最后,我們顯示該模型,等用戶摁下按鍵。

      檢驗結(jié)果

      用 Abba 來檢驗。

      $ python face_detect.py abba.png haarcascade_frontalface_default.xml

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      沒有問題,試試另一張照片。

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      那兩個東西不是臉,我們再試一次。我調(diào)整了參數(shù),發(fā)現(xiàn)把 scaleFactor 調(diào)成 1.2 能去除錯誤檢測。

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      發(fā)生了什么?第一張圖片由高清攝像機近距離拍攝,第二章拍攝距離相對更遠,而且可能是用手機拍的。這就是需要調(diào)整 scaleFactor 的原因。正如我說的,你需要按照實際場景設(shè)置算法,避免假正例。

      這里,雷鋒網(wǎng)提醒大家,由于這基于機器學(xué)習(xí),結(jié)果永遠不會 100% 精確。大多數(shù)情況下,你會得到不錯的結(jié)果。但算法偶爾會失誤。

      最終代碼在這里

      用網(wǎng)絡(luò)攝像頭

      如果你想要用網(wǎng)絡(luò)攝像頭呢?OpenCV 從攝像頭讀取每一幀,你可以通過處理每一幀進行人臉檢測。你需要一個性能強大的 PC,不過我的五歲大的筆記本用著還行。

      via realpython,雷鋒網(wǎng)編譯

      相關(guān)文章:

      手把手教你如何用 OpenCV + Python 實現(xiàn)人臉識別

      老板來了:人臉識別 + 手機推送,老板來了你立刻知道!

      雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知

      25 行 Python 代碼實現(xiàn)人臉檢測——OpenCV 技術(shù)教程

      分享:
      相關(guān)文章

      用愛救世界
      當(dāng)月熱門文章
      最新文章
      請?zhí)顚懮暾埲速Y料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
      立即設(shè)置 以后再說
      主站蜘蛛池模板: 97碰碰碰人妻视频无码| 国产剧情一区二区| 无码精品一区二区三区在线| 最新亚洲中文字幕在线| 国产伦精品一区二区三区免费迷| 女人被爽到高潮视频免费国产| 久久九九51精品国产免费看| 欧美叉叉叉bbb网站| 夜夜国自一区+1080P| 五月综合色婷婷在线观看| 西西444www高清大胆| 亚洲激情+五月| 色伊人亚洲综合网站| 日韩肏屄| 久久午夜无码鲁丝片午夜精品| 亚洲小视频| 国产极品精品自在线不卡| 精品人体无码一区二区三区| 一区二区在线欧美日韩中文| 亚洲精品不卡无码福利在线观看 | 南开区| 40岁成熟女人牲交片20分钟| 老熟女网站| 亚洲日韩成人精品| 久久这里都是精品一区| 91精品国产91久久久无码色戒 | 91在线综合| 麻豆国产成人av高清在线| 色窝视频| 97资源站人妻| 91sese| 成人免费无码成人影院日韩| 亚洲国产高清av网站| 国产午夜精品鲁丝片| 亚洲自偷自偷在线成人网站传媒 | 国产l精品国产亚洲区| 亚洲第一网站| 日韩在线不卡免费视频一区| jizzjizz视频| 久久夜精品综合缴情五月| 欧洲无码一区二区三区在线观看|