Python opencv實(shí)現(xiàn)人眼/人臉識(shí)別以及實(shí)時(shí)打碼處理
利用Python+opencv實(shí)現(xiàn)從攝像頭捕獲圖像,識(shí)別其中的人眼/人臉,并打上馬賽克。
系統(tǒng)環(huán)境:Windows 7 + Python 3.6.3 + opencv 3.4.2
一、系統(tǒng)、資源準(zhǔn)備
要想達(dá)成該目標(biāo),需要滿足一下幾個(gè)條件:
- 找一臺(tái)帶有攝像頭的電腦,一般筆記本即可;
- 需配有Python3,并安裝NumPy包、opencv;
- 需要有已經(jīng)訓(xùn)練好的分類器,用于識(shí)別視頻中的人臉、人眼等,如無分類器,可以點(diǎn)擊這里下載:haarcascades分類器
二、動(dòng)手做
1、導(dǎo)入相關(guān)包、設(shè)置視頻格式、調(diào)用攝像頭、指定分類器
import numpy as np
import cv2
fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")
out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))
cv2.namedWindow("CaptureFace")
#調(diào)用攝像頭
cap=cv2.VideoCapture(0)
#人眼識(shí)別器分類器
classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")
2、逐幀調(diào)用圖像,并實(shí)時(shí)處理
從攝像頭讀取一幀圖像后,先轉(zhuǎn)化為灰度圖像,然后利用指定的分類器識(shí)別出我們需要的內(nèi)容,接著對該部分內(nèi)容利用高斯噪聲進(jìn)行覆蓋,以達(dá)成馬賽克的目的。
代碼如下:
while cap.isOpened():
read,frame=cap.read()
if not read:
break
#灰度轉(zhuǎn)換
grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#人臉檢測
Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))
if len(Rects) > 0:
for Rect in Rects:
x, y, w, h = Rect
# 打碼:使用高斯噪聲替換識(shí)別出來的人眼所對應(yīng)的像素值
frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))
frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))
frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))
cv2.imshow("CaptureFace",frame)
if cv2.waitKey(5)&0xFF==ord('q'):
break
# 保存視頻
out.write(frame)
#釋放相關(guān)資源
cap.release()
out.release()
cv2.destroyAllWindows()
3、觀察效果
代碼調(diào)用攝像頭并在窗口進(jìn)行了顯示,可以實(shí)時(shí)觀察到圖像處理的效果,如圖:

并將結(jié)果保存為視頻,方便隨時(shí)查看:

完整代碼如下:
# -*- coding: utf-8 -*-
import numpy as np
import cv2
fourcc = cv2.VideoWriter_fourcc("D", "I", "B", " ")
out = cv2.VideoWriter('frame_mosic.MP4',fourcc, 20.0, (640,480))
cv2.namedWindow("CaptureFace")
#調(diào)用攝像頭
cap=cv2.VideoCapture(0)
#人眼識(shí)別器分類器
classfier=cv2.CascadeClassifier("../haarcascades/haarcascade_eye_tree_eyeglasses.xml")
while cap.isOpened():
read,frame=cap.read()
if not read:
break
#灰度轉(zhuǎn)換
grey=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
#人臉檢測
Rects = classfier.detectMultiScale(grey, scaleFactor = 1.2, minNeighbors = 3, minSize = (32, 32))
if len(Rects) > 0:
for Rect in Rects:
x, y, w, h = Rect
# 打碼:使用高斯噪聲替換識(shí)別出來的人眼所對應(yīng)的像素值
frame[y+10:y+h-10,x:x+w,0]=np.random.normal(size=(h-20,w))
frame[y+10:y+h-10,x:x+w,1]=np.random.normal(size=(h-20,w))
frame[y+10:y+h-10,x:x+w,2]=np.random.normal(size=(h-20,w))
cv2.imshow("CaptureFace",frame)
if cv2.waitKey(5)&0xFF==ord('q'):
break
# 保存視頻
out.write(frame)
#釋放相關(guān)資源
cap.release()
out.release()
cv2.destroyAllWindows()
利用opencv提供Python接口,可以很方便的進(jìn)行圖像、視頻處理方面的學(xué)習(xí)研究,實(shí)在是很方便。這里把近期所學(xué)做個(gè)簡單應(yīng)用,后續(xù)再學(xué)習(xí)更深入的知識(shí)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- opencv 做人臉識(shí)別 opencv 人臉匹配分析
- OPENCV+JAVA實(shí)現(xiàn)人臉識(shí)別
- python+opencv實(shí)現(xiàn)的簡單人臉識(shí)別代碼示例
- java+opencv實(shí)現(xiàn)人臉識(shí)別功能
- OpenCV Java實(shí)現(xiàn)人臉識(shí)別和裁剪功能
- 詳解如何用OpenCV + Python 實(shí)現(xiàn)人臉識(shí)別
- Python基于opencv實(shí)現(xiàn)的人臉識(shí)別(適合初學(xué)者)
- 結(jié)合OpenCV與TensorFlow進(jìn)行人臉識(shí)別的實(shí)現(xiàn)
- 基于python3 OpenCV3實(shí)現(xiàn)靜態(tài)圖片人臉識(shí)別
- OpenCV實(shí)現(xiàn)人臉識(shí)別
- 用OpenCV和Python進(jìn)行人臉識(shí)別實(shí)戰(zhàn)
相關(guān)文章
Pytorch保存模型用于測試和用于繼續(xù)訓(xùn)練的區(qū)別詳解
今天小編就為大家分享一篇Pytorch保存模型用于測試和用于繼續(xù)訓(xùn)練的區(qū)別詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
python 利用 PIL 將數(shù)組值轉(zhuǎn)成圖片的實(shí)現(xiàn)
這篇文章主要介紹了python 利用 PIL 將數(shù)組值轉(zhuǎn)成圖片的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
通過Python解析和執(zhí)行JavaScript代碼的完整指南
在Web開發(fā)、數(shù)據(jù)抓取或自動(dòng)化測試中,我們經(jīng)常需要處理JavaScript代碼,本文將介紹如何通過Python解析和執(zhí)行JavaScript代碼,并提供多種實(shí)用方法及代碼示例,需要的朋友可以參考下2025-09-09
python 調(diào)用HBase的簡單實(shí)例
下面小編就為大家?guī)硪黄猵ython 調(diào)用HBase的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
python實(shí)現(xiàn)協(xié)同過濾推薦算法完整代碼示例
這篇文章主要介紹了python實(shí)現(xiàn)協(xié)同過濾推薦算法完整代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
python爬蟲_自動(dòng)獲取seebug的poc實(shí)例
下面小編就為大家?guī)硪黄猵ython爬蟲_自動(dòng)獲取seebug的poc實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08

