摘要:在之前的文章中,我們學習了使用數據集訓練出一個識別器?,F在,我們將使用這個訓練好的文件去識別人臉了。我們把程序改成釋放資源記得釋放資源測試然后在測試階段,這個人工智障完美地識別不出我。
在之前的文章中,我們學習了使用數據集訓練出一個識別器。本文中,我們將載入這個識別器,然后來看見怎么識別人臉。
如果看過之前的文章,你就已經準備好了一個識別器,它就在trainner文件夾和trainner.yml文件里面。
現在,我們將使用這個訓練好的文件去識別人臉了。
導入import cv2 import numpy as np加載識別器
接下來,我們用OpenCV庫以及我們訓練好的數據(yml文件)創建一個識別器對象:
recognizer = cv2.face.LBPHFaceRecognizer_create() # recognizer = cv2.createLBPHFaceRecognizer() # in OpenCV 2 recognizer.read("trainner/trainner.yml") # recognizer.load("trainner/trainner.yml") # in OpenCV 2
然后用之前準備好的xml創建一個分類器:
cascade_path = "haarcascade_frontalface_default.xml" face_cascade = cv2.CascadeClassifier(cascade_path)
獲取到攝像頭的控制對象:
cam = cv2.VideoCapture(0)
加載一個字體,用于在識別后,在圖片上標注出識別對象的名字:
# font = cv2.cv.InitFont(cv2.cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 1, 1) font = cv2.FONT_HERSHEY_SIMPLEX識別程序的主循環
在程序的主循環中,我們需要做的是:
從攝像頭中獲取圖像
將圖像轉換為灰度圖片
在圖片中檢測人臉
用識別器識別該人的id
將識別出人臉的id或名稱用矩形在圖片中標出來
while True: ret, im = cam.read() gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.2, 5) for (x, y, w, h) in faces: cv2.rectangle(im, (x - 50, y - 50), (x + w + 50, y + h + 50), (225, 0, 0), 2) img_id, conf = recognizer.predict(gray[y:y + h, x:x + w]) # cv2.cv.PutText(cv2.cv.fromarray(im), str(Id), (x, y + h), font, 255) cv2.putText(im, str(img_id), (x, y + h), font, 0.55, (0, 255, 0), 1) cv2.imshow("im", im) if cv2.waitKey(10) & 0xFF == ord("q"): break
recognizer.predict為預測函數,putText則是在圖片上添加文字
更進一步由于可能識別不出來,或者存在未知的人臉。而且,如果只用id1,id2就會大大地降低了程序的體驗。因此,我們可以把id換成名字,把未知的臉標為未知。
我們把程序改成:
img_id, conf = recognizer.predict(gray[y:y + h, x:x + w]) if conf > 50: if img_id == 1: img_id = "jianyujianyu" elif img_id == 2: img_id = "ghost" else: img_id = "Unknown" # cv2.cv.PutText(cv2.cv.fromarray(im), str(Id), (x, y + h), font, 255) cv2.putText(im, str(img_id), (x, y + h), font, 0.55, (0, 255, 0), 1)釋放資源
記得釋放資源
cam.release() cv2.destroyAllWindows()測試
然后在測試階段,這個人工智障完美地識別不出我。
我覺得是素材不夠豐富,我回頭改改。。。
完整代碼現在的目錄:
import cv2 import numpy as np recognizer = cv2.face.LBPHFaceRecognizer_create() # recognizer = cv2.createLBPHFaceRecognizer() # in OpenCV 2 recognizer.read("trainner/trainner.yml") # recognizer.load("trainner/trainner.yml") # in OpenCV 2 cascade_path = "haarcascade_frontalface_default.xml" face_cascade = cv2.CascadeClassifier(cascade_path) cam = cv2.VideoCapture(0) # font = cv2.cv.InitFont(cv2.cv.CV_FONT_HERSHEY_SIMPLEX, 1, 1, 0, 1, 1) # in OpenCV 2 font = cv2.FONT_HERSHEY_SIMPLEX while True: ret, im = cam.read() gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.2, 5) for (x, y, w, h) in faces: cv2.rectangle(im, (x - 50, y - 50), (x + w + 50, y + h + 50), (225, 0, 0), 2) img_id, conf = recognizer.predict(gray[y:y + h, x:x + w]) if conf > 50: if img_id == 1: img_id = "jianyujianyu" elif img_id == 2: img_id = "ghost" else: img_id = "Unknown" # cv2.cv.PutText(cv2.cv.fromarray(im), str(Id), (x, y + h), font, 255) cv2.putText(im, str(img_id), (x, y + h), font, 0.55, (0, 255, 0), 1) cv2.imshow("im", im) if cv2.waitKey(10) & 0xFF == ord("q"): break cam.release() cv2.destroyAllWindows()
先這樣吧
原文,若有錯誤之處請指出,更多地關注煎魚。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41757.html
摘要:我們把要做的事分成三部分創建數據集訓練識別在本文中,我們會嘗試寫一個程序來生成數據集。生成數據集我們來寫一個數據集生成腳本。為了不會將不同的人臉照片弄混,我們需要定一個命名規則,用于給照片命名。 在上一篇文章中,我們學習了如何安裝配置OpenCV和Python,然后寫了些代碼玩玩人臉檢測。現在我們要進行下一步了,即搞一個人臉識別程序,就是不只是檢測還需要識別到人是誰。 來,搞人臉識別 ...
摘要:想要能人臉識別,我們需要訓練一個識別器處理?,F在,是時候用這個訓練集來訓練一個人臉識別器了。同目錄下,創建一個文件夾,名為,用于存放我們訓練后的識別器。訓練差不多完成了,現在我們調用一下這個函數,然后將我們的數據喂給識別器去訓練吧。 想要能人臉識別,我們需要訓練一個識別器處理。訓練的話就需要之前已經標注好的訓練集,在前一篇文章中,我們創建了一個已經標注好的訓練集。現在,是時候用這個訓練...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:人臉識別技術所獨具的活性判別能力保證了他人無法以非活性的照片木偶蠟像來欺騙識別系統。人臉識別技術所采用的依據是人臉照片或實時攝取的人臉圖像,因而無疑是最容易獲得的。 人臉識別是近年來模式識別、圖像處理、機器視覺、神經網絡以及認知科學等領域研究的熱點課題之一,被廣泛應用于公共安全(罪犯識別等)...
摘要:本文著重以人臉識別為例介紹深度學習技術在其中的應用,以及優圖團隊經過近五年的積累對人臉識別技術乃至整個人工智能領域的一些認識和分享。從年左右,受深度學習在整個機器視覺領域迅猛發展的影響,人臉識別的深時代正式拉開序幕。 騰訊優圖隸屬于騰訊社交網絡事業群(SNG),團隊整體立足于騰訊社交網絡大平臺,專注于圖像處理、模式識別、機器學習、數據挖掘、深度學習、音頻語音分析等領域開展技術研發和業務落地。...
閱讀 3717·2021-10-11 10:59
閱讀 1301·2019-08-30 15:44
閱讀 3479·2019-08-29 16:39
閱讀 2888·2019-08-29 16:29
閱讀 1800·2019-08-29 15:24
閱讀 808·2019-08-29 15:05
閱讀 1264·2019-08-29 12:34
閱讀 2302·2019-08-29 12:19