千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時隨地免費學(xué)

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時隨地免費學(xué)習(xí)課程

當前位置:首頁  >  技術(shù)干貨  > Python實時人臉識別/替換教程

Python實時人臉識別/替換教程

來源:千鋒教育
發(fā)布人:小千
時間: 2020-11-19 09:35:00 1605749700

攝像頭中的人臉檢測,也是人臉識別的一部分, 攝像頭播放的畫面本質(zhì)上是按幀將圖片拼湊起來的, 所以我們今天來用Python去識別并替換人臉。

想要進行人臉識別, 我們需要OpenCV, 還是先來說一下安裝的問題

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install opencv-contrib-python -i https://pypi.tuna.tsinghua.edu.cn/simple

pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple

一.資料的準備

1 人臉特征數(shù)據(jù)文件的準備

安裝完成之后, 我們想要進行人臉識別的話, 還需要一些表示人臉的特征數(shù)據(jù), 這些數(shù)據(jù)文件是存放在Python環(huán)境的安裝包下的 ----> Lib ----> site packages ----> cv2 -----> data的文件夾中,如果忘記了Python環(huán)境的安裝位置, 可以在命令提示符工具/終端上 輸入指令where python,在data文件夾中存放的都是xml文件, 這些就是對應(yīng)的特征數(shù)據(jù)文件, 將 haarcascade_frontalface_alt.xml 導(dǎo)入到你的編輯工具中,與當前編輯的文件在同一個目錄下

2.替換圖片的準備

我使用的是下面這張旺財臉 o(╥﹏╥)o

v2-9c0b7767a086b530684d529362da15ec_720w

二.代碼的實現(xiàn)

材料都準備完畢了, 我們就開始寫代碼吧

  • import cv2
  • if __name__ == '__main__'
  • # 根據(jù)人臉特征的數(shù)據(jù) 獲取人臉檢測器
  • face_detector = cv2.CascadeClassifier('.haarcascade_frontalface_alt.xml')
  • # 獲取攝像頭行為
  • cap = cv2.VideoCapture(0)
  • while True
  • # 從攝像頭中按幀返回圖片
  • flag,frame = cap.read()
  • if not flag # 沒有圖片時flag為False
  • break
  • # 將獲取的圖片置灰 檢測效率高一些
  • face_zones = face_detector
  • .detectMultiScale(cv2.cvtColor(frame,
  • code=cv2.COLOR_BGR2GRAY))
  • # 獲取檢測到的人臉區(qū)域
  • for x,y,w,h in face_zones
  • # 讀取覆蓋圖片
  • wc = cv2.imread('.head.png')
  • wc = cv2.resize(wc,dsize = (w,h)) # 將該圖片的大小重置為人臉的大小
  • frame[yy+h,xx+w] = wc # 將人臉顯示區(qū)域 替換成覆蓋的圖片
  • cv2.imshow('wangcai',frame) # 顯示圖片
  • key = cv2.waitKey(10)
  • if key == ord('q') # 輸入q退出讀取
  • break
  • cv2.destroyAllWindows()
  • cap.release()

最終結(jié)果如下圖

v2-afc8f07840af52015d003f82d847367d_720w

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學(xué)習(xí)老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
為什么說PHP與Swoole是優(yōu)異組合?

PHP與Swoole在Web開發(fā)和網(wǎng)絡(luò)編程領(lǐng)域中,共同構(gòu)成了一種強大的解決方案。什么是PHPPHP是一種廣泛使用的開源服務(wù)器端腳本語言,特別適用于Web開...詳情>>

2023-10-14 05:08:41
Javaweb開發(fā)為什么需要分前后端?

Javaweb開發(fā)采用前后端分離的設(shè)計模式是有著諸多理由的,以下分析了這種設(shè)計模式的主要特點和優(yōu)勢。什么是前后端分離在Web開發(fā)中,前后端分離是...詳情>>

2023-10-14 05:05:24
瀑布開發(fā)和敏捷開發(fā)的區(qū)別是什么?

一、開發(fā)流程不同瀑布開發(fā)采用線性的開發(fā)流程,按照預(yù)先規(guī)劃的順序依次進行需求分析、設(shè)計、編碼、測試和維護等環(huán)節(jié)。每個環(huán)節(jié)都有明確的交付物...詳情>>

2023-10-14 04:47:33
有哪款比較好用的免費的缺陷管理工具?

一、BugzillaBugzilla是一款廣泛使用的免費缺陷管理工具,具備完善的缺陷管理功能,并支持多用戶協(xié)同工作。Bugzilla提供了強大的搜索和過濾功能...詳情>>

2023-10-14 04:40:43
USB Type C電纜正反插都可以?

USB Type C電纜正反插都可以USB Type C電纜是一種通用連接標準,其最顯著的特點是具備正反插功能。不論插頭的方向如何,用戶都可以輕松插入USB ...詳情>>

2023-10-14 04:31:18