国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python基于OpenCV庫Adaboost實現人臉識別功能詳解

2020-02-15 22:49:04
字體:
來源:轉載
供稿:網友

本文實例講述了Python基于OpenCV庫Adaboost實現人臉識別功能。分享給大家供大家參考,具體如下:

以前用Matlab寫神經網絡的面部眼鏡識別算法,研究算法邏輯,采集大量訓練數據,迭代,計算各感知器的系數。。。相當之麻煩~而現在運用調用pythonOpenCV庫Adaboost算法,無需知道算法邏輯,無需進行模型訓練,人臉識別變得相當之簡單了。
需要用到的庫是opencv(open source computer vision),下載安裝方式如下:

使用pip install numpy語句安裝numpy

(如果出現錯誤:Microsoft Visual C++ 9.0 is required <unable to find vcvarsall.bat>,使用管理員身份安裝 Microsoft Visual C++ 9.0,重新啟動計算機,再使用使用pip install numpy語句安裝numpy

opencv2.4.10下載

下載之后解壓(隨便解壓到哪里),將解壓目錄opencv文件夾中,build->python->2.7->x86下的文件cv2.pyd 復制到python2.7/Lib/site-packages 中

測試是否安裝成功,執行解壓目錄下的sources/samples/python/drawing.py或者進入python環境,使用import cv2

首先講講需要用到的新函數:

CascadeClassifier()函數,導入分類器

cv2.CascadeClassifier('xxxxx.xml')#haarcascade_frontalface_alt.xml臉部識別文件#haarcascade_eye.xml眼部識別文件

函數的參數是xml完整路徑(具體看你的opencv安裝在哪里的,在opencv/sources/data/haarcascades下面),xml文件中是封裝好的算法

detectMultiScale()函數,進行識別

detectMultiScale(image,scaleFactor,minNeighbors,flags,minSize,maxSize)
最終返回值為識別出的矩陣框[x, y, w, h],(x,y)左上角起始坐標,w寬,h高 image:用于檢測的圖像 scaleFactor:前后兩次相繼的掃描中,搜索窗口的比例系數.例如1.1指將搜索窗口依次擴大10%。圖片小的時候,比例系數盡量小能提高準確率 minNeighbors:構成檢測目標的相鄰矩形的最小個數。一般使用2or3,為0時返回所有的被檢候選矩形框。

rectangle()函數,在圖片上畫矩陣

cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)
image是原始圖片 (x,y)是矩形左上角 (x+w,y+h)是矩形右下角 (0,255,0)是矩形的BGR顏色, 為紅色 2, 是繪制矩形的線寬

程序邏輯:

導入Haar級聯分類器算法,讀入要處理圖片,將圖片變成時候的大小,用detectMultiScale()函數先識別出人臉,在原圖上框出,然后提取出識別出的人臉矩形框,在人臉矩形框內識別出眼睛,在原圖上框出,展示出識別完的圖像。

完整程序及注解:

import cv2face_cascade = cv2.CascadeClassifier('D:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml')eye_cascade = cv2.CascadeClassifier('D:/opencv/sources/data/haarcascades/haarcascade_eye.xml')img1 = cv2.imread('face1.png')img = cv2.resize(img1,(240,320),interpolation=cv2.INTER_LINEAR)faces = face_cascade.detectMultiScale(img,1.2,2)for (x,y,w,h) in faces:  cv2.rectangle(img,(x,y),(x+w,x+h),(255,0,0),2)#用顏色為BGR(255,0,0)粗度為2的線條在img畫出識別出的矩型  face_re = img[y:y+h,x:x+w]#抽取出框出的臉部部分,注意順序y在前  eyes = eye_cascade.detectMultiScale(face_re)#在框出的臉部部分識別眼睛  for (ex,ey,ew,eh) in eyes:    cv2.rectangle(face_re,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)cv2.imshow('img',img)key = cv2.waitKey(0)if key==27:  cv2.destoryWindow('img')            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 卓尼县| 淄博市| 武城县| 阳西县| 定远县| 博乐市| 梧州市| 绥化市| 滦平县| 雷波县| 邹平县| 德江县| 徐水县| 滨州市| 广宗县| 于田县| 郁南县| 博爱县| 攀枝花市| 布尔津县| 盐亭县| 太仓市| 革吉县| 德安县| 澄迈县| 伽师县| 都匀市| 松阳县| 建昌县| 泗水县| 南宫市| 望城县| 工布江达县| 家居| 车致| 若尔盖县| 江源县| 兴业县| 仲巴县| 大荔县| 鞍山市|