Python學(xué)習(xí)筆記之視頻人臉檢測識別實例教程
前言
上一篇博文與大家分享了簡單的圖片人臉識別技術(shù),其實在實際應(yīng)用中,很多是通過視頻流的方式進(jìn)行識別,比如人臉識別通道門禁考勤系統(tǒng)、人臉動態(tài)跟蹤識別系統(tǒng)等等。
下面話不多說了,來一起看看詳細(xì)的介紹吧
案例
這里我們還是使用 opencv 中自帶了 haar人臉特征分類器,通過讀取一段視頻來識別其中的人臉。
代碼實現(xiàn):
# -*- coding: utf-8 -*- __author__ = "小柒" __blog__ = "https://blog.52itstyle.vip/" import cv2 import os # 保存好的視頻檢測人臉并截圖 def CatchPICFromVideo(window_name, camera_idx, catch_pic_num, path_name): cv2.namedWindow(window_name) # 視頻來源 cap = cv2.VideoCapture(camera_idx) # 告訴OpenCV使用人臉識別分類器 classfier = cv2.CascadeClassifier(os.getcwd()+"\\haarcascade\\haarcascade_frontalface_alt.xml") # 識別出人臉后要畫的邊框的顏色,RGB格式, color是一個不可增刪的數(shù)組 color = (0, 255, 0) num = 0 while cap.isOpened(): ok, frame = cap.read() # 讀取一幀數(shù)據(jù) if not ok: break grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 將當(dāng)前楨圖像轉(zhuǎn)換成灰度圖像 # 人臉檢測,1.2和2分別為圖片縮放比例和需要檢測的有效點數(shù) faceRects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32)) if len(faceRects) > 0: # 大于0則檢測到人臉 for faceRect in faceRects: # 單獨框出每一張人臉 x, y, w, h = faceRect # 將當(dāng)前幀保存為圖片 img_name = "%s/%d.jpg" % (path_name, num) # print(img_name) image = frame[y - 10: y + h + 10, x - 10: x + w + 10] cv2.imwrite(img_name, image, [int(cv2.IMWRITE_PNG_COMPRESSION), 9]) num += 1 if num > (catch_pic_num): # 如果超過指定最大保存數(shù)量退出循環(huán) break # 畫出矩形框 cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 2) # 顯示當(dāng)前捕捉到了多少人臉圖片了,這樣站在那里被拍攝時心里有個數(shù),不用兩眼一抹黑傻等著 font = cv2.FONT_HERSHEY_SIMPLEX cv2.putText(frame, 'num:%d/100' % (num), (x + 30, y + 30), font, 1, (255, 0, 255), 4) # 超過指定最大保存數(shù)量結(jié)束程序 if num > (catch_pic_num): break # 顯示圖像 cv2.imshow(window_name, frame) c = cv2.waitKey(10) if c & 0xFF == ord('q'): break # 釋放攝像頭并銷毀所有窗口 cap.release() cv2.destroyAllWindows() if __name__ == '__main__': # 連續(xù)截100張圖像 CatchPICFromVideo("get face", os.getcwd()+"\\video\\kelake.mp4", 100, "E:\\VideoCapture")
動圖有點花,講究著看吧:
如果是捕捉攝像頭,只需要改變以下代碼即可:
# 如果獲取攝像頭,參數(shù)修改為 0 即可 cap = cv2.VideoCapture(0)
源碼
https://gitee.com/52itstyle/Python/tree/master/Day09(本地下載)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- python調(diào)用百度API實現(xiàn)人臉識別
- python3.8動態(tài)人臉識別的實現(xiàn)示例
- 簡單的Python人臉識別系統(tǒng)
- Python3 利用face_recognition實現(xiàn)人臉識別的方法
- Python基于Dlib的人臉識別系統(tǒng)的實現(xiàn)
- 如何通過python實現(xiàn)人臉識別驗證
- face++與python實現(xiàn)人臉識別簽到(考勤)功能
- 用Python識別人臉,人種等各種信息
- Python基于Opencv來快速實現(xiàn)人臉識別過程詳解(完整版)
- Python人臉識別第三方庫face_recognition接口說明文檔
- python3人臉識別的兩種方法
- python dlib人臉識別代碼實例
- python實現(xiàn)圖片,視頻人臉識別(opencv版)
相關(guān)文章
Python編程使用*解包和itertools.product()求笛卡爾積的方法
這篇文章主要介紹了Python編程使用*解包和itertools.product()求笛卡爾積的方法,涉及Python列表轉(zhuǎn)換及itertools.product()求笛卡爾積相關(guān)操作技巧,需要的朋友可以參考下2017-12-12jupyter 使用Pillow包顯示圖像時inline顯示方式
這篇文章主要介紹了jupyter 使用Pillow包顯示圖像時inline顯示方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python設(shè)計模式之狀態(tài)模式原理與用法詳解
這篇文章主要介紹了Python設(shè)計模式之狀態(tài)模式原理與用法,簡單描述了狀態(tài)模式的概念、原理并結(jié)合實例形式分析了Python實現(xiàn)與使用狀態(tài)模式的相關(guān)操作技巧,需要的朋友可以參考下2019-01-01解決python2.7 查詢mysql時出現(xiàn)中文亂碼
這篇文章主要介紹了python操作mysql中文顯示亂碼的解決方法,是Python數(shù)據(jù)庫程序設(shè)計中經(jīng)常會遇到的問題,非常具有實用價值,需要的朋友可以參考下2016-10-10Pytorch實現(xiàn)的手寫數(shù)字mnist識別功能完整示例
這篇文章主要介紹了Pytorch實現(xiàn)的手寫數(shù)字mnist識別功能,結(jié)合完整實例形式分析了Pytorch模塊手寫字識別具體步驟與相關(guān)實現(xiàn)技巧,需要的朋友可以參考下2019-12-12python神經(jīng)網(wǎng)絡(luò)MobileNetV3?large模型的復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)MobileNetV3?large模型的復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05